70

tech2024-11-12  6

73.nonlocal关键字 (和global有点像)

nonlocal 用来声明 外层的局部变量。global 用来声明全局变量。

【操作】使用 nonlocal 声明外层局部变量

# 测试nonlocal ,glabal 的 关键字 用法 a = 100 def outer(): b = 10 def inner(): nonlocal b # 需要nonlocal 来声明外部函数 (outer) 的局部变量 print('inner read outer var b:', b) # inner 读取函数 outer 的变量 可以的 ,但是修改 就不行了 b = 20 # 不用nonlocal 声明的话 这行代码 会报错 global a # 声明 全局变量 a = 1000 inner() # 这里调用了 inner 所以 第二个 print 打印出来 是'20' print('inner:', b) outer() print('a:', a)

执行效果

In [8]: a = 100 ...: ...: ...: def outer(): ...: b = 10 ...: ...: def inner(): ...: nonlocal b # 需要nonlocal 来声明外部函数 (outer) 的局部变量 ...: print('inner read outer var b:', b) # inner 读取函数 outer 的变量 可以的 ,但是修改 就不行了 ...: b = 20 # 不用nonlocal 声明的话 这行代码 会报错 ...: ...: global a # 声明 全局变量 ...: a = 1000 ...: inner() # 这里调用了 inner 所以 第二个 print 打印出来 是'20' ...: print('inner:', b) ...: In [9]: outer() inner read outer var b: 10 inner: 20 In [10]: print('a:', a) a: 1000
最新回复(0)