Python高階迭代器和裝飾器

2021-09-27 12:01:28 字數 1731 閱讀 3865

python高階迭代器和裝飾器

一、迭代器

迭代是訪問集合元素的一種方式。

迭代器是乙個可以記住遍歷的位置的對 象。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結 束。迭代器只能往前不會後退。

1、可迭代物件

一類是集合資料型別,如 list 、 tuple 、 dict 、 set 、 str 等;

一類是 生成器(generator) ,包括生成器和帶 yield 的 生成器函式(generator function)。

這些可以直接作用於 for 迴圈的物件統稱為可迭代物件: iterable 。

1、isinstance() #用於判斷

生成器都是 iterator 物件,但 list 、 dict 、 str 雖然是 iterable ,卻不是 iterator 。 若想將可迭代物件變成迭代器可使用iter()函式。

二、裝飾器

1、閉包

在函式內部再定義乙個函式,並且這個函式用到了外邊函式的變數,那麼將這個函式以及用到的一些變數稱之為閉包。

1、def function(num):

2、 def function_inner(num_inner):

3、 print(「在function_inner函式中, num_inner is %d」 %num_inner)

4、 return num+num_inner

5、 return function_inner

6、res = function(20) #給num賦值

7、print(res(50)) #給num_inner賦值

執行結果

2、裝飾器

在執行原來功能基礎上,加上一些其它功能,比如許可權的驗證,比如日誌的記錄等等。不修改原來的**,進行功能的擴充套件。

寫**要遵循開放封閉原則(ocp),雖然在這個原則是用的物件導向開發,但是也適用於函式式程式設計,簡單來說,它規定已經實現的功能**不允許被修改,但可以被擴充套件。

1)**例項

1、def login_text(func):

2、 def inner():

3、 print("———— 1 ————")

4、 func() # 此處為呼叫函式,此處func()為login()

5、 print("———— 3 ————")

6、 return inner # 必須將裡面的函式返回

7、@login_text # @函式名 是 python 的一種語法糖

8、def login():

9、 print("———— 2 ————")

10、login()

執行結果

2)裝飾器作用

1、引入日誌

2、函式執行時間統計

3、執行函式前預備處理

4、執行函式後清理功能

5、許可權校驗等場景

6、異常的處理

7、快取

python高階裝飾器 Python裝飾器高階

對帶引數的函式進行裝飾 對帶引數的函式進行裝飾,內嵌包裝函式的形參和返回值與原函式相同,裝飾函式返回內嵌包裝函式物件 def deco func def deco a,b print before myfunc called.ret func a,b print after myfunc calle...

python高階 裝飾器

1.1 裝飾器 裝飾器的作用 在不改變原函式的情況下給函式增加功能 裝飾器由閉包和語法糖組成 1.2 閉包 閉包特點 外部函式巢狀內部函式 內部函式可以訪問並且儲存外部函式的變數 外部函式返回內部函式的引用 有以上三個特點的函式就稱為閉包 閉包的例子 def func1 a def func2 b ...

python高階 裝飾器

1.1 裝飾器 裝飾器的作用 在不改變原函式的情況下給函式增加功能 裝飾器由閉包和語法糖組成 1.2 閉包 閉包特點 外部函式巢狀內部函式 內部函式可以訪問並且儲存外部函式的變數 外部函式返回內部函式的引用 有以上三個特點的函式就稱為閉包 閉包的例子 def func1 a def func2 b ...