python 閉包函式 裝飾器 迭代器 生成器

2022-04-24 18:56:23 字數 1838 閱讀 5366

閉包函式有三個特性:

函式中巢狀函式

外層函式返回記憶體巢狀的函式名

巢狀函式對外部作用域有乙個非全域性變數的引用

def

func():

a = 100

deffunc2():

print

(a)

return func2

語法:@裝飾器

裝飾器的作用:在不更改原功能函式**和呼叫方式的基礎上給函式擴充套件新的功能。

開放封閉原則:

def

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()

結果:

可迭代物件:python中可以使用for去進行遍歷的都叫可迭代物件

- 字串、列表、元組、字典、range

迭代器:可迭代物件的一種,可以用內建函式next迭代取值

生成器:它是一種特殊的迭代器,同過yield可以定義生成器函式

li = [11,22,33,44]

#使用內建函式iter講迭代物件轉換為迭代器

ite =iter(li)

res =next(ite)

print

(res)

print

(next(ite))

print

(next(ite))

print

(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檔案執行的時候生...