1. 程式人生 > >Python_函數的鑲嵌和作用域鏈_26

Python_函數的鑲嵌和作用域鏈_26

定義 容器類 一個 當前 就是 ret def inner func

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
    def inner():
        a = 2
        def inner2():
            nonlocal a  #聲明了一個上面第一層局部變量
a += 1 #不可變數據類型的修改 inner2() print(##a## : , a) inner() print(**a** : ,a) outer() print(全局 :,a) #nonlocal 只能用於局部變量 找上層中離當前函數最近一層的局部變量 #聲明了nonlocal的內部函數的變量修改會影響到 離當前函數最近一層的局部變量 # 對全局無效 # 對局部 也只是對 最近的 一層 有影響 a = 0 def outer(): a = 1 def
inner(): a = 2 def inner2(): nonlocal a print(a) inner2() inner() outer() def func(): print(123) func() #函數名就是內存地址 func2 = func #函數名可以賦值 func2() l = [func,func2] #函數名可以作為容器類型的元素 print(l) for i in l: i() # 分別執行 func() func2() 函數
def func(): print(123) def wahaha(f): # 傳入 func f() return f #函數名可以作為函數的返回值 qqxing = wahaha(func) # 函數名可以作為函數的參數 qqxing() # 相當於在執行func() 函數

Python_函數的鑲嵌和作用域鏈_26