Python 도구 / 유틸리티

표준 라이브러리에는 모듈 및 명령 줄 유틸리티로 모두 사용할 수있는 여러 모듈이 함께 제공됩니다.

DIS 모듈

dis 모듈은 Python 디스어셈블러입니다. 바이트 코드를 사람이 소비하기에 약간 더 적합한 형식으로 변환합니다.

명령 줄에서 디스어셈블러를 실행할 수 있습니다. 주어진 스크립트를 컴파일하고 디스 어셈블 된 바이트 코드를 STDOUT에 인쇄합니다. dis를 모듈로 사용할 수도 있습니다. 그만큼dis function은 클래스, 메서드, 함수 또는 코드 객체를 단일 인수로받습니다.

#!/usr/bin/python
import dis

def sum():
   vara = 10
   varb = 20

   sum = vara + varb
   print "vara + varb = %d" % sum

# Call dis function for the function.

dis.dis(sum)

이것은 다음 결과를 생성합니다-

6           0 LOAD_CONST               1 (10)
              3 STORE_FAST               0 (vara)

  7           6 LOAD_CONST               2 (20)
              9 STORE_FAST               1 (varb)

  9          12 LOAD_FAST                0 (vara)
             15 LOAD_FAST                1 (varb)
             18 BINARY_ADD
             19 STORE_FAST               2 (sum)

 10          22 LOAD_CONST               3 ('vara + varb = %d')
             25 LOAD_FAST                2 (sum)
             28 BINARY_MODULO
             29 PRINT_ITEM
             30 PRINT_NEWLINE
             31 LOAD_CONST               0 (None)
             34 RETURN_VALUE

PDB의 모듈

pdb 모듈은 표준 Python 디버거입니다. bdb 디버거 프레임 워크를 기반으로합니다.

명령 줄에서 디버거를 실행할 수 있습니다 (n [또는 next]를 입력하여 다음 줄로 이동하고 사용 가능한 명령 목록을 얻는 데 도움을줍니다)-

실행하기 전에 pdb.py, 경로를 Python lib 디렉토리로 올바르게 설정하십시오. 위의 예제 sum.py를 사용해 보겠습니다.

$pdb.py sum.py
> /test/sum.py(3)<module>()
-> import dis
(Pdb) n
> /test/sum.py(5)<module>()
-> def sum():
(Pdb) n
>/test/sum.py(14)<module>()
-> dis.dis(sum)
(Pdb) n
  6           0 LOAD_CONST               1 (10)
              3 STORE_FAST               0 (vara)

  7           6 LOAD_CONST               2 (20)
              9 STORE_FAST               1 (varb)

  9          12 LOAD_FAST                0 (vara)
             15 LOAD_FAST                1 (varb)
             18 BINARY_ADD
             19 STORE_FAST               2 (sum)

 10          22 LOAD_CONST               3 ('vara + varb = %d')
             25 LOAD_FAST                2 (sum)
             28 BINARY_MODULO
             29 PRINT_ITEM
             30 PRINT_NEWLINE
             31 LOAD_CONST               0 (None)
             34 RETURN_VALUE
--Return--
> /test/sum.py(14)<module>()->None
-v dis.dis(sum)
(Pdb) n
--Return--
> <string>(1)<module>()->None
(Pdb)

프로필 모듈

프로필 모듈은 표준 Python 프로파일 러입니다. 명령 줄에서 프로파일 러를 실행할 수 있습니다-

다음 프로그램을 프로파일 링 해 보겠습니다.

#!/usr/bin/python

vara = 10
varb = 20

sum = vara + varb
print "vara + varb = %d" % sum

이제 실행 해보세요 cProfile.py다음과 같이이 파일 sum.py 위에 -

$cProfile.py sum.py
vara + varb = 30
         4 function calls in 0.000 CPU seconds

   Ordered by: standard name

ncalls  tottime  percall  cumtime  percall filename:lineno
   1    0.000    0.000    0.000    0.000 <string>:1(<module>)
   1    0.000    0.000    0.000    0.000 sum.py:3(<module>)
   1    0.000    0.000    0.000    0.000 {execfile}
   1    0.000    0.000    0.000    0.000 {method ......}

tabnanny의 모듈

tabnanny 모듈은 Python 소스 파일에서 모호한 들여 쓰기를 확인합니다. 파일이 들여 쓰기를 없애는 방식으로 탭과 공백을 혼합하면 사용중인 탭 크기에 관계없이 유모가 불평합니다.

다음 프로그램을 프로파일 링 해 보겠습니다.

#!/usr/bin/python

vara = 10
varb = 20

sum = vara + varb
print "vara + varb = %d" % sum

tabnanny.py로 올바른 파일을 시도하면 다음과 같이 불평하지 않습니다.

$tabnanny.py -v sum.py
'sum.py': Clean bill of health.