python __iter__用法,python中iter是什么意思_python iter()與 __iter__()的區別

 2023-12-25 阅读 29 评论 0

摘要:首先說一下 Iterable 與 iterator的區別Iterator 迭代器Iterable 可迭代對象Iterable 凡是可以for循環的 都屬于 iterable 可迭代對象python __iter__用法,Iterator 凡是可以next()的 都是iterator 迭代器可迭代對象(iterble)并不一定是 迭代器(iterator)迭代器(iterator)一定

首先說一下 Iterable 與 iterator的區別

Iterator 迭代器

Iterable 可迭代對象

Iterable 凡是可以for循環的 都屬于 iterable 可迭代對象

python __iter__用法,Iterator 凡是可以next()的 都是iterator 迭代器

可迭代對象(iterble)并不一定是 迭代器(iterator)

迭代器(iterator)一定是可迭代對象(iterable)

fromcollectionsimportIterable,Iterator

xxx='abcdec' #字符串是可迭代對象

recruiter、print isinstance(xxx,Iterable)

print isinstance(xxx,Iterator)

it_xxx = iter(xxx) #轉換為迭代器

print isinstance(it_xxx,Iterable)

print isinstance(it_xxx,Iterator)

python \t、True

False

True

True

可以看到 字符串是可迭代對象,但并不是迭代器

python i++,迭代器一定是可迭代對象

Iter()與 __iter__ 則用于產生 iterator(迭代器)

__iter__ 迭代器協議

凡是實現__iter__協議的對象,皆是迭代器對象。(next()也得實現,不然沒法產生數據)

Iter()迭代器工廠函數

python __init__?凡是有定義有__iter__()函數,或者支持序列訪問協議,也就是定義有__getitem__()函數的對象 皆可以通過 iter()工廠函數 產生迭代器(iterable)對象

from collections import Iterable,Iterator

class A(object):

def __init__(self,num):

self.num = num

pythonmapiter,self.start_num = -1

def __iter__(self):

return self

def next(self):

self.start_num += 1

python的iter函數怎么用、if self.start_num > self.num:

raise StopIteration

return self.start_num

# iter()

b = [1,2,3]

iter python、it_b = iter(b)

print next(it_b)

print next(it_b)

# __iter__()

a = A(10)

print next(a)

print next(a)

print isinstance(it_b,Iterator)

print isinstance(a,Iterator)

#運行結果

1

2

0

1

True

True

由上可以看出來 iter()與iter()均產生迭代器。

Iter()與__iter__ 則用于產生 iterator(迭代器)

總體來說

__iter__用于自定義用戶對象(類)

iter()用于支持序列訪問協議,也就是定義有__getitem__()函數的內置對象,以及實現了__getitem__()函數的 用戶自定義對象。

iter()也可以用于 實現了 __iter__()的對象,不過既然已經實現了__Iter__(),那么本身就是一個迭代器了,沒必要在iter()一下。

迭代器(Iterator):

GOF給出的定義為:提供一種方法訪問一個容器(container)對象中各個元素,而又不需暴露該對象的內部細節。用于順序訪問集合對象的元素,不需要知道集合對象的底層表示。

迭代器是一種高層次的抽象接口,迭代器接口。一種統一的用于順序訪問集合對象中元素的標準,規范。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/194593.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息