def F1():
myvar = 1
myArrayVar = []
def F2():
global myvar, myArrayVar # this will be changed by F2()
myvar = 2
myArrayVar.append(myVar)
print(myvar)
F2()
F1()所以我在一个函数里面有一个函数。因为F2()是递归的,所以我必须在外部存储变量。
在C中,我将两者分开或传递指针,在Java中,我将创建对象。但是,在Python中有没有什么东西可以让我在不做太多更改的情况下快速完成这项工作呢?我不想使用全局变量,需要将myvar放在F1()的上下文中
谢谢。
发布于 2020-05-19 10:53:08
您可以使用nonlocal变量:
def F1():
myvar = 1
myArrayVar = []
def F2():
nonlocal myvar, myArrayVar # this will be changed by F2()
myvar = 2
myArrayVar.append(myvar)
F2()
print(myvar)
print(myArrayVar)
F1()2
[2]发布于 2020-05-19 10:53:32
实际上,这里只需要将myvar声明为nonlocal变量。myArrayVar只是一个闭包变量,因为您不需要重新绑定名称,因此不需要特殊处理。
def F1():
myvar = 1
myArrayVar = []
def F2():
nonlocal myvar # allows changes to myvar to be seen by the outer scope
myvar = 2
myArrayVar.append(myvar)
print(myvar)
F2()
F1()https://stackoverflow.com/questions/61882386
复制相似问题