區域性變數:在函式中定義的變數一般只能在該函式內部使用,這些只能在程式的特定部分使用
全域性變數:在乙個檔案頂部定義的變數可以供該檔案中任意函式呼叫
1優先讀取區域性變數,能讀取全域性變數,無法對全域性變數重新賦值
name='輸出:change_name 區域性變數全域性變數
'def
change_name():
name='
區域性變數
'print('
change_name
',name)
change_name()
print(name)
全域性變數
2global語句可以把區域性變數強制生成全域性變數,如果函式沒有被呼叫的話 global是沒有用的
name = "輸出:列印出 yueyuexixi
"def
s1():
global name #
已經宣告,name就是全域性的那個變數xixi
name = "
yueyue"#
修改全域性的變數為yueyue
print('
列印出'
, name)
defs2():
print('
列印出'
, name)
s1()
s2()
列印出 yueyue
3對於可變型別,可以對內部元素進行操作
name = ["輸出:列印出 ['wangwang', 'shishi', 'yaoyao']wangwang
","shishi"]
defs1():
'yaoyao')
print('
列印出'
, name)
s1()
######## 全域性變數變數名大寫
######## 區域性變數變數名小寫
函式跟函式之間巢狀變數
name = '輸出:巢狀1全域性變數'#
第一步執行
defs1():
name = "
巢狀1"
#第三步執行
print(name) #
第四步執行(輸出第一行)
defs2():
name = "
巢狀2"
#第六步執行
print(name) #
第七步執行(輸出第二行)
defs3():
name = '
巢狀3'
#第十步執行
print(name) #
第十一步執行(輸出第四行)
print(name) #
第八步執行(輸出第三行)
s3() #
第九步執行
s2() #
第五步執行
print(name) #
第十二步執行(輸出第五行)
s1()
#第二步執行
巢狀2巢狀2
巢狀3巢狀1
nonlocal指定上一級變數,如果沒有就繼續往上直到找到為止
name = "輸出:全域性變數全域性變數
"def
s1():
name = "西西"
defss1():
nonlocal name
#把上一級變數name=西西改為name=月月
name = "月月"
ss1()
(name)
(name)
s1()
print(name)
月月全域性變數
慢性拆分詳解
name = '輸出:全域性變數全域性變數'#
第1步執行
def s1(): #
第2步執行
name = "
巢狀1"
#第4.1步執行
print(name) #
第4.2步執行(輸出第二行)
def s2(): #
第4.3步執行
name = "
巢狀2"
#第4.4.1步執行
print(name) #
第4.4.2步執行(輸出第三行)
def s3(): #
第4.4.3步執行
name = '
巢狀3'
#第4.4.5.1步執行執行
print(name) #
第4.4.5.2步執行(輸出第五行)
print(name) #
第4.4.4步執行(輸出第四行)
s3() #
第第4.4.5步執行步執行
s2() #
第4.4步執行
print(name) #
第4.5步執行(輸出第六行)
print(name) #
第3步執行(輸出第一行)
s1() #
第4步執行
print(name) #
第5步執行(輸出第七行)
巢狀1巢狀2
巢狀2巢狀3
巢狀1全域性變數
python 函式 區域性變數與全域性變數
本節知識點 程序啟動獲得資源 定義變數,定義函式,占用資源 函式內部定義的變數是區域性變數 在當前程序作用範圍內的變數是全域性的變數 例子 租房市場,單間小房與客廳,小板櫈的使用許可權 區域性變數 全域性變數 例子當前的租房市場 單間800元 月,一般是三室一廳的某乙個室,臥室 通過來加深理解 na...
python 函式區域性變數與全域性變數
區域性變數是在某個函式中宣告的,只能在該函式中呼叫它,如果試圖在超出範圍的地方呼叫,程式就爆掉了 如果在函式內部定義與某個全域性變數一樣名稱的區域性變數,就可能會導致意外的效果,可能不是你期望的。因此不建議這樣使用,這樣會使得程式很不健全 全域性變數是在整個py檔案中宣告,全域性範圍內都可以訪問 注...
python 函式 區域性變數與全域性變數
函式優點 重用 保持一致性 可擴充套件性 import time def logger 時間年 月 日 分 time format y m d x time current time.strftime time format 開啟檔案a.txt,追加end action with open a.tx...