1. 程式人生 > >Python變數作用域問題

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這個變數存在的!