python基礎 迭代器 生成器 裝飾器

2021-09-25 18:22:27 字數 1287 閱讀 3113

擁有__iter__方法和__next__方法的物件就是迭代器。

作用:節約空間,取的時候再生成資料。

例子:

fib():

def __init__(self,num):

self.num=num

self.a=1

self.b=1

self.current=1

def __iter__(self):

return self

def __next__(self):

if self.current<=self.num:

temp=self.a

self.a,self.b=self.b,self.a+self.b

self.current+=1

return temp

else:

raise stopiteration

for x in fib(12):

print(x)

生成器的本質就是迭代器。

生成器包括生成器函式和生成器表示式兩種。

乙個包含yield關鍵字的函式就是乙個生成器函式。

例子:

def fib(n):

a,b=1,1

i=1while i<=n:

yield a

a,b=b,a+b

i+=1

for x in fib(12):

print(x)

閉包三個要求:

1、閉包函式必須有內嵌函式。

2、內嵌函式必須引用外層函式的變數。

3、閉包函式返回內嵌函式的位址。

裝飾器函式的本質:乙個閉包函式。

裝飾器函式的作用:在不修改函式及其呼叫方式的情況下對元函式功能進行擴充套件。

例子:

from functools import wraps

def acor(f):

@wraps(f)

def neibu(a,b):

print("*********")

d=f(a,b)

print("*********")

return d

return neibu

@acor

def func(a,b):

""":param a:

:param b:

:return:

"""c=a+b

return c

print(func(3,8))

print(func.__doc__)

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...