2017-11-14 4 views
-1

私はしばしばデバッグの目的で変数を出力する必要があります。変数が何であるかを知ることは非常に役立ちます。だから私は、次の並べ替えを行う機能を持っているしたいと思います:Python 2.7.9で変数の名前を調べるにはどうしたらいいですか?

from __future__ import print_function 

def get_variable_name(my_variable): 
    ... ? 

def print_with_variable_name(my_variable): 
    print (get_variable_name(my_variable), ': ', my_variable) 

a = 30 
print_with_variable_name(a); 

予想される出力:

a: 30 

を、私は私が唯一の機能でどこことを行うことができ、問題のいくつかの部分的な解決策を見つけました関数は、それ以外の場合は印刷し、名前aで定義された:

my_variable: 30 

は、私はちょうどこの新しい印刷機能と私でモジュールを書くことができ、問題へのエレガントな解決策はあります私が好きなところでそれをmport?

+2

これは扱いにくいです。 Pythonオブジェクトはその名前を知らない:名前を持たないか、複数の名前を持つことがある。 OTOHでは、いくつかのオブジェクト型(通常の 'def'関数など)には' .__ name__'属性があります。はるかに簡単な計画は、_string_という名前を受け付ける関数を書くことです。この関数は、その名前にバインドされたオブジェクトがあるかどうかを確認するために使用できます。この記事が参考になるかもしれません:[ベータ版の名前と値についての事実と神話](http://nedbatchelder.com/text/names.html)、SOベテランのNed Batchelderによって書かれました。 –

+1

短い答え:することはできません。あなたがオブジェクトにバインドされている可能な名前の_one_を取得するために汚いトリックを使用することができますが、一般的で信頼性の高いものはありません。 –

+1

[my answer](https://stackoverflow.com/a/31358785/4014959)の最後に、リンクされた質問の中に興味深いコードをいくつか追加しました。 –

答えて

1

は辞書で試してみてください。 dict((name,eval(name)) for name in ['list', 'of', 'vars'])

+0

これは十分柔軟ではありません。私はちょうど私がオーバーヘッドなしで望むプログラムを追加したい(インポート自体以外) – alinafdima

0

それはあなたのプログラムがどのように動作するか(異なる変数の多くを)合わせます場合、私は辞書を使用してお勧めします。辞書を使用すると、値と値の名前を取得できます。

関連する問題