请注意:这不是关于如何更改函数体内的全局变量的问题。我理解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() - 在返回结果之前使用
globalinmodified_procedure()修改PARAMETER然后恢复它procedure()
我可以通过阴影来做到这一点PARAMETER吗?如果是这样,怎么做?