请注意:这不是关于如何更改函数体内的全局变量的问题。我理解global
关键字。
我的脚本有一堆全局配置变量。我想编写一个函数来隐藏本地命名空间中的一个全局变量(modified_procedure()
下面调用)并调用另一个引用配置变量的函数。IE,
PARAMETER = 1
def procedure():
return PARAMETER * 3
def modified_procedure():
PARAMETER += 1
return procedure()
这失败了,因为PARAMETER
发生在的主体中,modified_procedure()
所以解释器认为它是一个局部变量,而不是在全局命名空间中查找它。我不想改变全局变量PARAMETER
;我正在尝试将其隐藏在modified_procedure()
的名称空间中。
我可以想到几个不方便的解决方案:
- OOPify 脚本,以便配置变量是对象属性,我可以创建一个新的子类
procedure()
- 在返回结果之前使用
global
inmodified_procedure()
修改PARAMETER
然后恢复它procedure()
我可以通过阴影来做到这一点PARAMETER
吗?如果是这样,怎么做?