Python全域性變數和區域性變數的問題?

時間 2021-05-31 05:11:26

1樓:留德華叫獸

sum = 5

def add(x, y):

print sum

sum = x + y

這個報錯的原因是

同乙個方程scope下,變數sum僅可能是區域性或者全域性add方程並沒有宣告sum是全域性變數

所以第二行實際上是建立並賦值了乙個區域性變數sumsum = x + y

那麼在add方程下,sum只可能是區域性變數了往前看print sum

這句話需要輸出區域性變數sum

但是,sum變數在這個語句之後才被定義和賦值所以報錯了

只需在方程宣告變數sum 是 global變數即可sum=0

def add(x, y):

global sum

print sum

sum = x + y

執行結果如下:

參考:Python--Variables and scope

2樓:Yancy Lau

請教乙個區域性變數和全域性變數的問題

# define global

# find file name

# find entity id

# put into dictiion

結果錯誤:

in ()

16 17into dictiion

---> 18 if entity_id and file_name:

19a[file_name] = entity_id20 NameError: name 'entity_id' is not defined

3樓:唐僧騎馬東那個東

print sum時,函式裡之前沒有sum這個變數,所以報錯, 如果在函式裡要用全域性變數,用global sum 宣告一下這是全域性變數就可以了。

4樓:洛克

按你的理解,print sum是全域性變數,sum = x + y是區域性變數。

系統是如何知道的呢,為啥不可以認為

sum= x+y是改變全域性變數的值呢。

在乙個函式裡面的同乙個變數名。。

「static全域性變數與普通的全域性變數的區別是static全域性變數只初始化一次」是對的嗎?

開開心心學做人 static全域性變數應該叫靜態全域性變數,將符號的作用域限制在當前檔案內,不管有沒有static,全域性變數都只初始化一次。 fairlyblank 都只初始化一次。static修飾的變數儲存在全域性儲存空間,和普通全域性變數一樣,但static修飾的變數對其他編譯單元不可見。 向...

指標和區域性變數的效率有很大的差異嗎?

Zhensheng Yuan 你們放開這題目!讓我來!第乙個問題 前者兩個區域性變數,後者乙個,所以前者的確是使用了更多儲存空間。第二個問題 首先,訪問效率最高的是暫存器,其次是CPU內建的快取,再之主存,即物理記憶體。dobule h high是區域性變數,而且函式內區域性變數數量少,很明顯兩者的...

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

冒泡 就py自己來說,主要還是太過靈活了,比如你可以不定義,直接global,或修改globals字典 a Traceback most recent call last File line 1,in NameError name a is not defined def fglobal a a 1...