nonlocal是python中的一个关键字(区分大小写),当我们使用嵌套函数时需要使用它,并且我们需要使用在外部函数中声明的函数,如果执行相同的操作,则会将变量创建为local和这样我们将无法使用在外部函数中声明的内部函数中的变量。
在这种情况下,我们可以使用nonlocal关键字将变量(在外部函数中声明)定义为内部函数中的非局部变量。
非本地关键字的语法
nonlocal variable_name
示例
def outerfunc(): a = 10 def innerfunc(): # 非本地绑定 nonlocal a a = 100 # 调用内部函数 innerfunc() # 打印一个的值 print("a : ", a) Output: a : 100
示例1:在外部函数中定义两个变量,并在内部函数中将一个变量设为非局部变量。
# python代码演示一个例子 # 非本地关键字的 # 嵌套函数 def outerfunc(): a = 10 b = 20 def innerfunc(): # 非本地绑定 nonlocal a a = 100 # 将更新 b = 200 # 不会更新, # 它将被视为局部变量 # 调用内部函数 innerfunc() # 打印一个的值 and b print("a : ", a) print("b : ", b) # 主要代码 # calling the function i.e. outerfunc()outerfunc()
输出结果
a : 100 b : 20
如您在输出中看到的,a和b是以下变量 outerfunc() 并在 innerfunc() 我们将变量a绑定为局部变量,因此a在此处将不是局部变量,但是b将被视为以下变量的局部变量 innerfunc() 如果我们更改b的值,该值将被视为新分配给局部变量(对于 innerfunc())b。