開發筆記 Python中的全域性變數

2021-05-22 20:00:05 字數 1045 閱讀 1466

全域性變數不符合引數傳遞的精神,所以,平時我很少使用,除非定義常量。今天有同事問乙個關於全域性變數的問題,才發現其中原來還有門道。

程式大致是這樣的:

constant = 0

def modifyconstant() :

print constant

constant += 1

return

if __name__ == 『__main__』 :

modifyconstant()

print constant

執行結果如下:

unboundlocalerror: local variable 『constant』 referenced before assignment

看來,全域性變數在函式modifyconstant中邊成了區域性變數,似乎全域性變數沒有生效?

做點修改:

constant = 0

def modifyconstant() :

print constant

#constant += 1

return

if __name__ == 『__main__』 :

modifyconstant()

print constant

執行正常,看來函式內部是可以訪問全域性變數的。

所以,問題就在於,因為在函式內部修改了變數constant,python認為 constant是區域性變數,而print constant又在constant += 1之前,所以當然會發生這種錯誤。

那麼,應該如何在函式內部訪問並修改全域性變數呢?應該使用關鍵字global來修飾變數(有點像php):

constant = 0

def modifyconstant() :

global constant

print constant

constant += 1

return

if __name__ == 『__main__』 :

modifyconstant()

print constant

就這麼簡單!

Energy的開發筆記

演化為 foreach jobjiect jo in ja string jsontext jsonreader reader new jsontextreader new stringreader jsontext while reader.read 陣列型資料 三 對不同儀表裝置的呼叫方法與結果...

python實現2048遊戲開發筆記

一 遊戲描述 這裡省略了 估計來看的人都玩過2048遊戲 二 遊戲設計 首先將遊戲分解成若干個區域性一一實現 1 輸入規則 asdw分別代表左下由上,r為reset,q為退出,其他不執行。2 輸出介面 def display for i in range 4 print for j in range...

Python學習筆記(三) Python中的變數

變數 就是給資料起個名字 變數是計算機記憶體中的一塊區域,變數可以儲存規定範圍內的值,而且值可以改變。c語言宣告變數,需要先宣告變數的型別,如 int a python則是一種引用,對應的是記憶體中的值,可以改變 python變數的命名 變數名由字母 數字 下劃線組成 不能以數字開頭 不可以使用關鍵...