Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
notOnlyCRUD 2019-11-19 01:47:58 发布的技术动态 - OurCoders (我们程序员)
notOnlyCRUD
2019-11-19 01:47:58 发布
今晚有实验室的小朋友问我global关键字和双下划线魔法方法,讲得不太清楚,反思下还是理解不太深的原因。借此机会再学一遍python变量作用域。

刚学python的同学经常会遇到"UnboundLocalError: local variable 'x' referenced before defined"这样的错误,意思是引用了一个未定义的本地变量。纳尼?你他么逗我呢么?明明是个之前在函数外面定义过全局变量啊你妹的!

那么为什么会被解释器认为是局部变量呢?那是因为你在函数中尝试修改这个变量了。一个变量,只能在它被声明的作用域中修改。所以你有修改操作的时候解释器就认为你是局部变量了,然后又在函数内部找不到变量定义,就报这样的错误了。

那难道就不能改了么?
可以的。在函数内部,显示声明这个变量为global,那么解释器就知道这个变量是全局的,就回去全局作用域找了,于是在函数内部可读可写。

于此类似的还有nonlocal.
网页链接