Python變數作用域問題
阿新 • • 發佈:2018-12-17
本文最後更新於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這個變數存在的!