Python3-python-tools-utilities

提供:Dev Guides
移動先:案内検索

Python 3-ツール/ユーティリティ

標準ライブラリには、モジュールとしてもコマンドラインユーティリティとしても使用できる多数のモジュールが付属しています。

_dis_モジュール:

disモジュールはPython逆アセンブラーです。 バイトコードを、人間が消費するのにやや適した形式に変換します。

コマンドラインから逆アセンブラを実行できます。 指定されたスクリプトをコンパイルし、逆アセンブルされたバイトコードをSTDOUTに出力します。 disをモジュールとして使用することもできます。 dis 関数は、クラス、メソッド、関数、またはコードオブジェクトを単一の引数として受け取ります。

#!/usr/bin/python3
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)

_profile_モジュール

プロファイルモジュールは、標準のPythonプロファイラーです。 あなたは、コマンドラインからプロファイラを実行することができます-

次のプログラムのプロファイルを作成してみましょう-

#!/usr/bin/python3

vara = 10
varb = 20

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

さて、次のようにこのファイル_sum.py_上で cProfile.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/python3

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.