GDI*_*der 1 python reference function
我有一个脚本,我必须更改一些功能并重置我对它们所做的更改.我目前这样做:
def a():
pass
def b():
pass
def c():
pass
def d():
pass
previous_a = a
previous_b = b
previous_c = c
a = d
b = d
c = d
# I want to make the following code block shorter.
a = previous_a
b = previous_b
c = previous_c
Run Code Online (Sandbox Code Playgroud)
我希望有一个迭代数据结构(可能是字典)的循环,而不是枚举所有要重置的函数,并使用它们之前的值重置函数变量.在前面的示例中,当前的方法3函数是可以的,但是对15个以上的函数执行此操作将产生我想要减少的大代码块.
不幸的是,我一直无法找到可行的解决方案.我想到了弱点,但我对它们的实验失败了.
只需将旧函数存储在字典中:
old = {'a': a, 'b': b, 'c': c}
Run Code Online (Sandbox Code Playgroud)
然后使用globals()字典恢复它们:
globals().update(old)
Run Code Online (Sandbox Code Playgroud)
这只适用于a,b并且首先c是全局变量.
您可以使用相同的技巧分配d给所有这些名称:
globals().update(dict.fromkeys(old.keys(), d))
Run Code Online (Sandbox Code Playgroud)
这台键a,b并c以相同的值d.