たとえば、コードを実行したいとします。
value += 5
私自身の名前空間内(したがって、結果は本質的に ですmydict['value'] += 5
)。function がありexec()
ますが、そこに文字列を渡す必要があります:
exec('value += 5', mydict)
ステートメントを文字列として渡すのは奇妙に思えます (たとえば、そのように色付けされていません)。次のようにできますか?
def block():
value += 5
???(block, mydict)
? 最後の行の明らかな候補は でしexec(block.__code__, mydict)
たが、運が悪かった:UnboundLocalError
約value
. block 内のコードblock()
ではなく、基本的に を実行すると思います。そのため、割り当ては簡単ではありません。正しいですか?
もちろん、別の可能な解決策は、分解することblock.__code__
です...
参考までに、このスレッドのために質問を受けました。また、これが一部の(私は未定)が新しい構文を要求する理由です
using mydict:
value += 5
これがどのようにエラーをスローしないmydict
か、どちらも変更しないことに注意してください。
def block(value = 0):
value += 5
block(**mydict)