将全局变量分配给函数的局部变量



我想遍历一些全局变量i,每次编译一个使用i瞬时值的新函数。然后,我可以在将来使用这些函数中的每一个,而与i的当前值无关。

问题是我找不到一种好方法i使全局变量在函数的命名空间中保持本地。例如:

i = 0
def f():
return i
i = 1
print(f()) #Prints 1, when I want 0

我找到了一个解决方案,但它似乎很笨拙:

i = 0
def g(x):
def h():
return x
return h
f = g(i)
i = 1
print(f()) #Prints 0 as I wanted.

有没有更好的方法来做到这一点,也许是某种装饰器?

Python 函数是对象,可以在它们上设置属性:

i = 0
def f():
return f.i
f.i = i
i = 1
print(f()) # Prints 0 as you wanted

或:

for i in range(5):
f.i = i
print(f())

请注意,参数也会这样做。

相关内容

  • 没有找到相关文章

最新更新