(1)内部函数可以访问外部函数的变量;
(2)可以修改外部函数的可变类型变量;
(3)在内部函数中,修改全局变量需要加 global关键字声明;修改外部函数的不可变类型变量需要加 nonlocal 关键字声明;
num01 = 1
def fun01():
num02 = 2
s = 'apple'
lst = {1, 2, 3}
def fun02():
nonlocal num02
global num01
num01 += 1 # 修改全局变量
s = 'melon' # 此时变量s对于函数fun02()来说是局部变量
num02 += 3 # 修改不可变类型变量
lst.add(4) # 修改可变类型变量
print(s) # s = 'melon'
print(num01) # num01 = 2
print(num02) # num02 = 5
print(lst) # lst = {1,2,3,4}
print(s) # 外部函数:s = 'apple'
fun02()
该关键字的作用就是,在内部函数中声明外部函数不可变类型的变量,使得在内部函数中可以修改该变量,在上面的例子中已经能够明确的说明。
另外,在这里介绍两个函数:
locals() : 字典,查看当前函数中的局部变量;
globals() : 字典,查看全局变量,包含系统内容;