我想遍历一些全局变量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.
有没有更好的方法来做这件事,也许是某种装饰师?
答案 0 :(得分:1)
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())
请注意,参数也会这样做。