😊
python でモジュール定義の変数をリストアップ
python でモジュール定義の変数をリストアップ
ある外部モジュールで定義された変数とその値をリストアップする。
主にデバッグ目的です。
例として使用する外部モジュール定義
module1.py
TEST1 = 1
TEST2 = "abc"
TEST3 = None
__TEST4__ = 4
_TEST5_ = 5
外部モジュールの変数をリストアップする側
main.py
import module1
for key, value in vars(module1).items():
if key.startswith('__'):
continue
print(key, value)
実行結果
>python main.py
TEST1 1
TEST2 abc
TEST3 None
_TEST5_ 5
※ __TEST4__
以外は出力されている。
解説
組み込み関数のvars() を使って、外部モジュール (ここでは module1
) の属性(正確には __dict__
属性) をリストアップする。
組み込み関数のvars() は dictionary を返すので、items()
メソッド` を使って、キーと値を取り出す。
ここでビルトインの変数も含まれれるので __ で始まる
変数名は除外している。
__TEST4__
のように自分で定義した変数も除外されるが、これは用途に応じてフィルタリングする条件を調整すればいい。
__
で始まる 変数名を一律で除外するのではなく、例えばビルトインの変数は __builtins__
にまとめられているので、これを除外すれば大分数は減らせる。__name__
や __file__
などは除外できないのが、何を調べたいかと、自前で定義していないものが含まれていても問題がないか次第である。
参考
Discussion