1. ホーム
  2. python

[解決済み] Pythonです。変数の名前と値を表示する?

2023-05-25 13:18:36

質問

デバッグの際、以下のようなprint文をよく見かけます。

print x        # easy to type, but no context
print 'x=',x   # more context, harder to type
12
x= 12

変数または変数名を受け取り、その名前と値を表示する関数をどのように書くことができますか? 私はもっぱらデバッグ出力に興味があり、これは本番コードに組み込まれることはありません。

debugPrint(x)    #  or
debugPrint('x')
x=12

どのように解決するのですか?

この場合 eval :

def debug(variable):
    print variable, '=', repr(eval(variable))

あるいは、より一般的に(呼び出し元の関数のコンテキストで実際に動作し、かつ debug('variable') では壊れませんが、CPython上だけです)。

from __future__ import print_function

import sys

def debug(expression):
    frame = sys._getframe(1)

    print(expression, '=', repr(eval(expression, frame.f_globals, frame.f_locals)))

とか出来るんですね。

>>> x = 1
>>> debug('x + 1')
x + 1 = 2