Python变量作用域问题

2018/04/18 Python

本文最后更新于2018-6-20,可能会因为没有更新而失效。如已失效或需要修正,请联系我!

今天在用Python写程序时突然想起了Python变量作用域的问题,代码如下:

def run():
    global x
    x=3
    print(x)
run()
x+=1
print(x)

这段代码运行并不会出错,问题的关键主要在于global这个关键字,stackoverflow上有人问过类似的问题, url
主要的意思是在一个函数里如果把一个变量声明为global,那么这个变量就是全局的,
如果全局变量中不存在这个变量,那就新建一个全局变量。
然后我就写了另外一段有意思的代码:

#main.py
import main2
main2.first()
main2.then()
#main2.py
def first():
    global x
    x=0
    print(x)
def then():
    global x
    x+=1
    print(x)

这是在2个文件里的Python代码,可以正确运行。
这段代码的意思是Python的global声明的最大作用域是当前文件,并不能用其他文件里的全局变量。
在上面的代码中x的作用域是main2整个文件,而在main里是没有x这个变量存在的!

Search

    Table of Contents