python中__main__的作用域及变量使用
今天使用python写一段小程序时发现了一个容易忽略掉的变量作用域的细节。先看一下问题。
$ cat main_variable.py
x = 1
if __name__ == "__main__":
global x
x = 2
$ python main_area.py
main_area.py:4: SyntaxWarning: name 'x' is assigned to before global declaration
global x
程序的本来目的是在对全局变量前使用global进行声明,但却引发了SyntaxWarning异常。问题原因其实也很简单,因为虽然使用’if name == “main”‘进行判断后再执行,但代码还是处于整个文件的作用域中,因此并不需要使用global进行声明。
因此程序可以有下面两种改法:
- 方法1:
$ cat main_variable.py
x = 1
if __name__ == "__main__":
x = 2
$ python main_area.py
- 方法2:
$ cat main_variable.py
x = 1
def main():
global x
x = 2
if __name__ == "__main__":
main()
$ python main_area.py
写程序一定要注意细节啊!