閉包函式有三個特性:
函式中巢狀函式
外層函式返回記憶體巢狀的函式名
巢狀函式對外部作用域有乙個非全域性變數的引用
def語法:@裝飾器func():
a = 100
deffunc2():
(a)
return func2
裝飾器的作用:在不更改原功能函式**和呼叫方式的基礎上給函式擴充套件新的功能。
開放封閉原則:
def可迭代物件:python中可以使用for去進行遍歷的都叫可迭代物件func(fu):
""":param fu: 被裝飾的函式
:return:
"""def
print("
裝飾擴充套件的新功能1")
print("
裝飾擴充套件的新功能2")
#呼叫原功能函式
fu()
print("
裝飾擴充套件的新功能3")
return
@func
#----> print_info = func(print_info)
defprint_info():
print("
---原功能函式列印的個人資訊---")
print_info()
結果:
- 字串、列表、元組、字典、range
迭代器:可迭代物件的一種,可以用內建函式next迭代取值
生成器:它是一種特殊的迭代器,同過yield可以定義生成器函式
li = [11,22,33,44]#使用內建函式iter講迭代物件轉換為迭代器
ite =iter(li)
res =next(ite)
(res)
(next(ite))
(next(ite))
(next(ite))
print(next(ite)) # -------超出迭代範圍
"生成器函式
"for i in range(100):
yield
i
print("
函式呼叫列印
python裝飾器,閉包函式
閉包函式 在函式a內部定義另外乙個函式b,之後b作為a的返回值直接被返回。此時函式b稱為a的閉包函式。在閉包函式b中如果使用a函式中定義的變數,此時a函式中被定義的變數會被臨時儲存,直到b函式呼叫結束時該變數才會被系統收回,從而實現a中變數延遲釋放 例如global 宣告的變數屬於全域性變數,此時在...
Python 裝飾器 ,閉包
1 裝飾器 不改變被裝飾的函式情況下附加一些功能 本質是函式,用於裝飾其他函式,附加一些本身所沒有的功能 實質 是乙個函式 引數 是你要裝飾的函式名 並非函式呼叫 返回 是裝飾完的函式名 也非函式呼叫 作用 為已經存在的物件新增額外的功能 特點 不需要對物件做任何的 上的變動 例1 計算執行時長 i...
8 12 day13 閉包函式,裝飾器,迭代器
函式名和變數名是等同的 引用函式的引數 函式的返回值 容器類元素 def f1 def f2 passdef f1 pass f1 def f2 f1 函式必須得先定義後呼叫python直譯器的內建方法,如 len int float,python直譯器啟動的時候就有了 python檔案執行的時候生...