您好,登錄后才能下訂單哦!
1.1.概述:
裝飾器本質上是一個 Python 函數,它可以讓其他函數在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返回值也是一個函數對象。
1.2.詳細描述:
1.import?logging??2.#?定義裝飾器,接收舊函數??
3.def?decorator(oldfunc):??
4.?????定義新函數,加強原函數??
5.????def?new_func(*args,?**kwargs):??
6.????????加強代碼寫這里,記錄日志信息....??
7.????????logging.error("記錄日志信息")??
8.????????ret?=?oldfunc(*args,?**kwargs)??
9.????????return?ret??
10.??
11.?????返回新函數??
12.????return?new_func??
13.??
14.??
15.#?通過語法糖使用裝飾器??
16.@decorator??
br/>2.#?定義裝飾器,接收舊函數??
3.def?decorator(oldfunc):??
4.?????定義新函數,加強原函數??
5.????def?new_func(*args,?**kwargs):??
6.????????加強代碼寫這里,記錄日志信息....??
7.????????logging.error("記錄日志信息")??
8.????????ret?=?oldfunc(*args,?**kwargs)??
9.????????return?ret??
10.??
11.?????返回新函數??
12.????return?new_func??
13.??
14.??
15.#?通過語法糖使用裝飾器??
16.@decorator??
18.?????獲取?兩個數的平方??
19.????return?x**2??
20.??
21.#?執行??
22.print(square(5))??
1.3.應用場景:
日志記錄,統計代碼執行時間,權限驗證
2.迭代器和生成器的區別
2.1.概述:
生成器是特殊的迭代器,它更加優雅.生成器中的元素不是直接生成好,而是每使用next()方法獲取下一個元素的時候才創建,從而大大節省內存空間。迭代器和生成器的區別
2.2.詳細描述:
1.迭代器是一個更加抽象的概念,任何對象,如果它的類有next方法和iter方法返回自身。對于string、list、dict、tuple等這類容器對象,使用for循環遍歷是很方便的。在后臺for語句對容器對象調用iter()函數,iter()是Python的內置函數。iter()會返回一個定義了next()方法的迭代器對象,它在容器中逐個訪問容器內元素,next()也是python的內置函數。在沒有后續元素時,next()會拋出一個StopIterration的異常。
2.生成器(Generator)是創建迭代器的簡單而強大的工具。它有列表生成器和函數生成器.函數生成器寫起來就像是正規的函數,只是在返回數據的時候需要使用yield語句返回。每次next()被調用時,生成器會返回它脫離的位置(它記憶語句最后一次執行的位置和所有的數據值)
2.3.應用場景:
1.#?列表生成器,其實就是列表推導式的[]寫成()??
2.g?=?(i?for?i?in?range(10))??
3.print(next(g))??
4.print(next(g))??
5.print(next(g))??
6.print(next(g))??
7.??
8.??
9.#?通過?函數式生成器?獲取?1-10?數字的平方??
10.def?sqrt():??
11.????num?=?1??
12.????while?num?<=?10:??
13.????????返回平方??
14.????????yield?num**2??
15.????????num?+=?1??
16.??
17.????????調用函數返回生成器??
18.????????g?=?sqrt()??
19.????????print(next(g))??
20.????????print(next(g))??
21.????????print(next(g))??
22.????????print(next(g))??
(本文由源碼時代技術老師原創撰寫,轉載請注明出處)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。