1樓:冒泡
就py自己來說,主要還是太過靈活了,比如你可以不定義,直接global,或修改globals字典:
>>> a
Traceback (most recent call last):
File "", line 1, in
NameError: name 'a' is not defined
>>> def fglobal a
... a = 123
...>>> f()
>>> a
123>>> globals()["b"] = 456
>>> b
456>>>
而且沒有所謂「模組私有全域性變數」的概念,這對維護性是比較大的挑戰(誰都能改你的)
不過話說回來,py的函式、類、import進來的全域性名字也都是變數,也是能隨便改的,只不過一般沒人這麼幹
至於脫離語言本身,從程式設計的角度不推薦用全域性變數,這個可以搜一下,不過每個語言也有一些不太一樣的理由了
2樓:
其實最主要的還是容易產生有的沒的bug。
我至今還是弄不懂python的import機制,寫神經網路的時候,總想單獨寫乙個超引數的py檔案,但是總會出現import error,網上各種解決辦法有時候有效,有時候根本無用,後來就釋然了。
3樓:血小板自動機
在我做的一些練手專案過程中,我深刻的體會到盡量不要用全域性變數的緣由了,下面是我個人踩過的坑:
使用全域性變數汙染了作用域,可能無意間就修改了全域性變數尤其是物件導向程式設計,會極大的影響封裝性
可能產生一些命名衝突,導致莫名奇妙的bug在併發程式設計修改同一全域性變數時,處理起來很麻煩全域性變數在初始化的時候有乙個依賴順序問題
全域性變數一般是用於一些配置檔案,資料庫或者命名常量等情況。若必須使用全域性變數,建議制定好乙個全域性變數的約束和清單,能不使用盡量就別使用。
Python全域性變數和區域性變數的問題?
留德華叫獸 sum 5 def add x,y print sum sum x y 這個報錯的原因是 同乙個方程scope下,變數sum僅可能是區域性或者全域性add方程並沒有宣告sum是全域性變數 所以第二行實際上是建立並賦值了乙個區域性變數sumsum x y 那麼在add方程下,sum只可能是...
「static全域性變數與普通的全域性變數的區別是static全域性變數只初始化一次」是對的嗎?
開開心心學做人 static全域性變數應該叫靜態全域性變數,將符號的作用域限制在當前檔案內,不管有沒有static,全域性變數都只初始化一次。 fairlyblank 都只初始化一次。static修飾的變數儲存在全域性儲存空間,和普通全域性變數一樣,但static修飾的變數對其他編譯單元不可見。 向...
用純C程式設計,使用很多(20個以上)全域性變數會造成什麼不良影響嗎?
水dong方塊 外部函式 外部變數 靜態變數 靜態函式也叫內部函式 如果不希望檔案中的函式在其他檔案中呼叫,可以定義為靜態函式。防止別的檔案有同名函式 static 型別名函式名 前面加上static 寫在對應的函式體內。雖然可讀性會改善,不過本質上記憶體布局沒有變化。我的個人觀點是盡可能從改進程式...