20210111-1 裝飾器之巢狀函式
阿新 • • 發佈:2021-01-11
1-1 # 什麼是巢狀函式? # 在函式體內在用 def 定義另外一個函式 def foo(): print('in the foo') def bar(): print('in the bar') bar() foo() ---> in the foo in the bar # bar() 是一個區域性變數,存在於過程或者函式中;函式即變數 # 區域性變數不能在外面呼叫,只能在內部呼叫 # 所以,如果要呼叫 bar(),應該寫在內部 1-1-1 # 以下情況是函式巢狀嗎? # 如果 test2 存在,這種方式叫函式巢狀嗎? # 這叫函式呼叫,不是巢狀def test1(): test2() test1() # 裝飾器是由巢狀函式和高階函式組成 2-1 區域性作用域和全域性作用域的訪問順序 x=0 def grandpa(): # x=1 def dad(): x=2 def son(): x=3 print(x) son() dad() grandpa() # grandpa 函式中 套了兩個函式,如果想執行 son;一定要通過 dad 進行呼叫 # 所以寫 dad()呼叫的目的,是為了執行 son()# 如果不寫 dad(),呼叫 grandpa() 時,會有什麼效果? # 遇到 def 相當於定義一個變數,如果沒有呼叫 dad(),後面相當於沒有變數,相當於什麼事情都沒有做 # 作用域一層一層,從內向外尋找