Python nonlocal
语句(在Python3.0及更高版本中)的作用是什么?
Python官方网站上没有文档,help("nonlocal")
也不起作用。
发布于 2009-08-11 17:40:52
简而言之,它允许您为外部(但非全局)作用域中的变量赋值。有关所有血淋淋的细节,请参阅PEP 3104。
发布于 2010-12-05 21:30:02
@ooboo:
它采用与源代码中的参考点“最接近”的点。这就是所谓的“词法作用域”,至今已有40多年的历史了。
Python的类成员实际上在一个名为__dict__
的字典中,并且永远不会被词法作用域访问到。
如果你不指定nonlocal
而指定x = 7
,它将创建一个新的局部变量"x“。如果你指定了nonlocal
,它会找到“最接近的”"x“并赋值给它。如果您指定了nonlocal
,并且没有"x",它将给您一条错误消息。
关键字global
对我来说总是很奇怪,因为它会愉快地忽略除最外面的那个之外的所有其他"x“。真奇怪。
发布于 2011-08-04 18:25:00
我个人对“非本地”语句的理解是,“非本地”是一种在迭代函数中使用全局功能的方法,而不是代码本身。函数之间的全局语句。
https://stackoverflow.com/questions/1261875
复制相似问题