看上面的標題的意思是,函式還能套函式?
name = "alex
"def
change_name():
name = "
alex2
"def
change_name2():
name = "
alex3
"print("
第3層列印
",name)
change_name2()
#呼叫內層函式
print("
第2層列印
",name)
change_name()
print("
最外層列印
",name)
此時,在最外層呼叫change_name2()出錯
作用域在定義函式時就已經固定住了,不會隨著呼叫位置的改變而改變
例一:name='
alex
'def
foo():
name='
lhf'
defbar():
(name)
return
barfunc=foo()
func()
例二:name='
alex
'def
foo():
name='
lhf'
defbar():
name='
wupeiqi
'def
tt():
(name)
return
tt
return
barfunc=foo()
func()()
函式的巢狀和作用域
函式的巢狀定義 內部函式可以使用外部函式的變數 作用域鏈 在內部函式使用變數時,是從小區域性到大區域性到全域性到內建名字的過程中一級一級網上找,找到最近的乙個就使用 nonlocal a 宣告乙個上層區域性變數,往上走一級離得最近並且有a 1 對全域性無效 2 對區域性的最近的一層產生影響 閉包巢狀...
函式的巢狀和作用鏈域
def max a,b return a if a b else b def the max x,y,z 函式的巢狀呼叫 c max x,y return max c,z print the max 1,2,3 函式的巢狀定義 內部函式可以使用外部函式的變數 a 1 def outer a 1 de...
python 函式巢狀及作用域
函式可以巢狀嗎?當然可以 我們可以看到,外部函式outer func 的函式體中巢狀了乙個函式inner func 並且outer func 體中 還呼叫了內部函式inner func 所以每當呼叫outer func 的時候,都會呼叫一次inner func 我 們來看一下列印結果 我們可以看到,...