[英]Conditionally declare variables as global inside a Python function
我正在开发一个 Python 函数,其中的中间结果应该有条件地在函数外部访问,以进行绘图。 它涉及> 20个大变量。 为了保留内存,我的目标是仅在需要绘图的情况下使变量全局可用。
请参阅以下代码片段,我最初预计会按预期工作:
def x():
if True:
global a
a = 10
return
x()
print(a)
预期结果:只有在执行 if 语句时才能打印变量“a”。
实际结果:始终可以打印变量“a”。
我尝试了很多东西,但似乎无法实现预期的行为。 正确的编程是使用“return”将所需的变量返回到全局范围。 但是,我不知道如何在有这么多变量的情况下以一种漂亮的方式有条件地做到这一点。 谁能解释我看到的行为,并建议如何实现所需的行为?
变量是局部变量还是全局变量是在编译函数时确定的,而不是在函数运行时确定的。 所以这不可能是动态的。
您可以通过使用locals()
和globals()
函数来访问不同的变量环境来解决它。
def x():
env = locals()
if <condition>:
env = globals()
env['a'] = 10
return
x()
print(a)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.