Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

Python nonlocal 与 global 关键字解析

$
0
0
nonlocal

首先,要明确 nonlocal 关键字是定义在闭包里面的。请看以下代码:

x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x) 结果 # inner: 2 # outer: 1 # global: 0

现在,在闭包里面加入nonlocal关键字进行声明:

x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x) 结果 # inner: 2 # outer: 2 # global: 0

看到区别了么?这是一个函数里面再嵌套了一个函数。当使用 nonlocal 时,就声明了该变量不只在嵌套函数inner()里面

才有效, 而是在整个大函数里面都有效。

global

还是一样,看一个例子:

x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x) 结果 # inner: 2 # outer: 1 # global: 2

global 是对整个环境下的变量起作用,而不是对函数类的变量起作用。


Viewing all articles
Browse latest Browse all 9596

Trending Articles