python迭代器生成器和裝飾器

2021-10-24 20:05:31 字數 1382 閱讀 6197

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 函式的定義,這種在 執行期間動態增加功...