2

この機能がデフォルトでサポートされていないことはわかっています。私が試みているのは、実用的なアプリケーションがほとんどなく、退屈と好奇心の結果としての精神的なマスターベーションの完全な実践であるハックな回避策です。 . そうは言っても、私は次のことをやろうとしています:

次の Python コードに基づいて、

with BuildFile('mybuild.build') as buildfile:
    objdir = 'obj'

mybuild.build次の内容のファイルを生成したいと思います。

objdir = obj

理想的には、作成時点で変数名を関連付けたいので、の直後にブレークポイントを設定するobjdir = 'obj'と、次のことができるようになります。

>>> print repr(objdir)
'objdir = obj'

ただし、構文から推測された型をオーバーライドする方法がないため、組み込み機能ではこれは不可能です。基礎となる構造体のorフィールドにモンキー パッチを適用する (その後、終了時にそのオーバーライドを元に戻す) ためBuildFile.__enter__に使用する方法で回避策を一緒にハックすることになるかもしれませんが、簡単にするために、変数名を関連付けていないと仮定しましょう。メソッドにたどり着くまで。ctypestp_newtp_dictPyTypeObjectBuildFile.__exit__

私が疑問に思っているのは、次のことです。

実行を停止し、ローカル変数が宣言されたフレームに戻り、変数に関連付けられたローカル名を取得する組み込みの Python 機能はありますか?

4

3 に答える 3

0

これを試すことができると思います:

from copy import copy
objdir = 'obj'

def get_variable_name(variable):

    if variable:
        variables = copy(locals())
        for i in variables:
            if variables.get(i) == variable:
                res = i + '=' + variables.get(i)
                return res

これを使用するとうまくいくはずです。私はこのコードを自分でテストしました。

于 2013-07-11T01:53:17.970 に答える