閉包函式#作用域關係在函式定義階段時就已經固定死了,與呼叫位置無關
# 即:在任意位置呼叫函式都需要跑到定義函式時尋找作用域關係
# def f1():
# x=1
# def inner():
# print(x) #x最後還是等於1,因為只看定義階段,
## return inner
## func=f1()
## def f2():
# x=111111
# func()
## f2()
# 閉包函式:
# 閉指的是:該函式是乙個內部函式
# 包指的是:指的是該函式包含對外部作用域(非全域性作用域)名字的引用
# def outter():
# x = 1
# def inner():
# print(x)
## return inner #outter()拿到的是inner的位址。
## f=outter()
## def f2():
# x=1111111
# f()
## f2()##
# def f3():
# x=4444444444444
# f()
## f3()
# 注意:當函式體需要傳值的時候,有兩種方法:
# 為函式體傳值的方式一:使用引數的形式
# def inner(x):
# print(x)
## inner(1)
# inner(1)
# inner(1)
# 為函式體傳值的方式二:包給函式
函式裝飾器和閉包
裝飾器是可呼叫的物件,其引數是另乙個函式 被裝飾的函式 裝飾器可能會處理被裝飾的函式,然後把它返回,或者將其替換成另乙個函式或可呼叫物件。裝飾器通常把函式替換成另乙個函式 defdeco func definner print running inner return inner deco def ...
閉包函式和裝飾器
目錄 二 閉包函式的應用 裝飾器閉包 閉是封閉 函式內部巢狀函式 包是包含,閉包是指該內部函式對外部作用域而非全域性作用域的變數的引用。為函式傳參的方式一 使用引數的形式def func x print x func 1 為函式傳參的方式二 包給函式def outter x x 2 def inne...
閉包函式和裝飾器
目錄裝飾器 閉包即函式內部函式對外部作用域而非全域性作用域的引用,說白了就是將函式內部的變數拿到全域性來使用,還不會修改區域性變數的值 def outter x 5 def inner return x return inner f outter x f 1 print f print x 5 6使...