gpt4 book ai didi

python - 使用具有多个函数的闭包而不在 Python 中使变量成为全局变量

转载 作者:行者123 更新时间:2023-11-28 21:58:00 25 4
gpt4 key购买 nike

我试图在 Python 2.7 中制作一个示例程序,它在两个函数之间保存/共享状态。你调用了一个函数,下次再调用一个函数,它应该记住之前的值。这是我当前的代码:

def stuff():
global x
x = 100
def f():
global x
x = x * 2
return x
def g():
global x
x = x * 4
return x
return (f, g)

a,b = stuff()
print(a());

此代码有效,但要注意的是 x 不能被视为范围 stuff() 的全局变量。 ..(这就是首先将 x 嵌入到 stuff() 中的全部意义)。那么,x 是全局的,还是 stuff() 的局部变量?

最佳答案

如果你需要支持 python 2.X,@georgek 的答案是最好的,但很多人没有意识到你可以为函数添加属性。一个常见的习惯用法是使用单个元素的列表来保存变量。

def stuff():
x = [100]
def g():
x[0] = x[0]*2
return x[0]
def h():
x[0] = x[0]*4
return x[0]
return (g,h)
a, b = stuff()
print(a())

这是可行的,因为您永远不会在内部范围内分配给 x 本身,因此它不会重新绑定(bind)变量并隐藏闭包。

关于python - 使用具有多个函数的闭包而不在 Python 中使变量成为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19287485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com