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

时间:2018-06-06 16:29:41

标签: python global-variables

我想遍历一些全局变量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.

有没有更好的方法来做这件事,也许是某种装饰师?

1 个答案:

答案 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())

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