TL; DR:包含するスコープで見えるlocals()が必要です。スコープを格納するためのPython locals()
こんにちは、すべて。
私はいくつかの化学者の友人にPythonプログラミングのコースを教えています。私は本当に範囲を理解していますか?
は考えてみましょう:
def a():
x = 1
def b():
print(locals())
print(globals())
b()
地元の人々は空の環境を印刷し、グローバルは、通常のグローバルを出力します。 xが格納されている環境にアクセスするにはどうすればよいですか?私がそれを参照することができるので、通訳者はそれを知っていることは明らかです。
関連:スコープはいつ発生しますか?あなたは、x = 3をコメントアウトした場合、コードが動作する
def a():
x = 1
def b():
a = x+2
x = 3
b()
:= X + 2のみのx = 3が含まれている場合に、次のnameErrors。これは、Pythonがそれを解釈する前にコードに対して字句スコープを渡すことを意味しますか?
リストが必要ですか?印刷用のグローバルの後にprint xを行うことができるからです。編集:xにprint xでアクセスし、x:1で満たされているlocals()であると言うことを忘れないでください。 –
[Pythonで名前空間を呼び出すことからローカルを取得]の可能性があります(http://stackoverflow.com/questions/6618795/get-locals-from-calling-namespace-in-python) – piokuc