python中使用全域性變數是否有什麼弊處?

時間 2021-06-04 14:52:06

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 寫在對應的函式體內。雖然可讀性會改善,不過本質上記憶體布局沒有變化。我的個人觀點是盡可能從改進程式...