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'