Python 如何在函数内部使用(函数 F1 中的变量)(F2 在 F1 中)
Python how to use (variables inside function F1) inside function (F2 which is inside F1)
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()
的上下文中
谢谢。
您可以使用 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]
实际上这里只需要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()
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()
谢谢。
您可以使用 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]
实际上这里只需要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()