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...