[Python] 315 globalsおよびlocalsメソッドによる変数確認

globalsおよびlocalsメソッドで変数を辞書型データで取得できます。localsメソッドは関数外で使用するとglobalsメソッドと同じ内容になります。

for文で全local変数がどう変化していくかなど、より詳細なデバッグに使えそうです。

from pprint import pprint

def function():
    a = 1
    b = 100
    c = "Python"

    for i in range(10):
        print(i)
        print(locals())

    pprint(locals())

    pprint(globals())
    pprint(globals()['__file__'])

function()
--------------------------------------------------

出力
--------------------------------------------------
0
{'a': 1, 'b': 100, 'c': 'Python', 'i': 0}
1
{'a': 1, 'b': 100, 'c': 'Python', 'i': 1}
2
{'a': 1, 'b': 100, 'c': 'Python', 'i': 2}
3
{'a': 1, 'b': 100, 'c': 'Python', 'i': 3}
4
{'a': 1, 'b': 100, 'c': 'Python', 'i': 4}
5
{'a': 1, 'b': 100, 'c': 'Python', 'i': 5}
6
{'a': 1, 'b': 100, 'c': 'Python', 'i': 6}
7
{'a': 1, 'b': 100, 'c': 'Python', 'i': 7}
8
{'a': 1, 'b': 100, 'c': 'Python', 'i': 8}
9
{'a': 1, 'b': 100, 'c': 'Python', 'i': 9}
{'a': 1, 'b': 100, 'c': 'Python', 'i': 9}
{'__annotations__': {},
 '__builtins__': <module 'builtins' (built-in)>,
 '__cached__': None,
 '__doc__': None,
 '__file__': 'var_test.py',
 '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x104508ca0>,
 '__name__': '__main__',
 '__package__': None,
 '__spec__': None,
 'function': <function function at 0x104551f70>,
 'pprint': <module 'pprint' from '/Users/[ユーザー名]/.pyenv/versions/3.9.7/lib/python3.9/pprint.py'>}
'var_test.py'