7.迭代器和生成器區別
迭代器是乙個抽象概念,任何物件,它的next方法和iter方法返回自己本身。iter是內建函式,iter()會返回乙個定義了next方法的迭代器物件,
class mynumbers:
defiter(self):
self.a = 1
return self
defnext(self):
x = self.a
self.a += 1
return x
myclass = mynumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
生成器是建立得帶去簡單而強大的工具寫起來就像正規函式,在返回資料是使用yield語句,每次next()被呼叫,生成器會返回它脫離的位置
#!/usr/bin/python3
import sys
def fibonacci(n): # 生成器函式 - 斐波那契
a, b, counter = 0, 1, 0
while true:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是乙個迭代器,由生成器返回生成
while true:
try:
print (next(f), end=" ")
except stopiteration:
sys.exit()
8.裝飾器
在不改變原來的**基礎上,新增新的功能
作用1.引用日誌
2。函式執行時間統計
3.執行函式前預備處理
4.快取
5.許可權校驗#coding:utf-8
import time
def decorate(func):
a = 1
def warp():
start_time = time.time()
print(a)
func()
end_time = time.time()
print(end_time-start_time)
return warp
@decorate
def function():
time.sleep(1)
function()
Python生成器 迭代器 裝飾器
python生成器 迭代器 裝飾器 最簡單的生成器 g x x for x in range 10 for i in g print i函式方法實現稍複雜的生成器 def fib max n,a,b 0,1,1 while nyield b a,b b,a b n 1 for n in fib 6 ...
python 裝飾器,生成器,迭代器
示例1 無參無返回值 def shuai func 示例2 帶參函式的裝飾器 帶參函式的裝飾器 示例3 帶參有返回值的裝飾器 def zhuangshiqi func 資料量非常小,記憶體占用不大 l i for i in range 10 資料量特別大時,會造成記憶體占用突然增大 l2 i for...
Python裝飾器,迭代器,生成器
1.python裝飾器 由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。所有函式都有乙個 name 屬性,這樣我們就可以那到函式名。現在,假設我們要增強now 函式的功能,比如,在函式呼叫前後自動列印日誌,但又不希望修改now 函式的定義,這種在 執行期間動態增加功...