麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

Python for循環與getitem的關系詳解

2024-09-09 19:03:30
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Python for循環與getitem的關系詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一個類里面如果由__iter__for循環就是找它取,沒有的話就會找__getitem__

前面一筆看過沒有留心具體的執行情況。

In [169]: class Foo:   ...:   def __getitem__(self, pos):   ...:     print(pos)   ...:     return range(10)[pos]   ...:  
In [172]: for i in f:   ...:   ...   ...:      ...:                                             012345678910

從代碼可以看出,如果沒有報錯或者設置顯式的條件,這個for循環會無線循環。

我現在設置一個顯式的設置。

In [173]: class Foo:   ...:   def __getitem__(self, pos):   ...:     if pos >5:   ...:       raise StopIteration   ...:     print(pos)   ...:     return range(10)[pos]   ...: 
In [177]: for i in f:   ...:   ...   ...:                                             012345

將錯誤設置為IndexError也可以執行,但TypeError就不行了。

   ...:   def __getitem__(self, pos):   ...:     if pos >5:   ...:       raise IndexError   ...:     print(pos)   ...:     return range(10)[pos]   ...:                                              In [182]:                                              In [182]: f = Foo()                                         In [183]: for i in f:   ...:   ...   ...:                                             012345

如果用list去運行這個參數會把返回的一個一個元素,裝入列表當中:

In [184]: list(f)                                         012345Out[184]: [0, 1, 2, 3, 4, 5]

只有__getitem__的類的實例是屬于可迭代對象,但用isinstances測試collections.Iterable是不能通過的,書后面介紹可以通過iter函數來測試,如果沒報錯就說明是可迭代對象,然后生成一個沒有__next__屬性的迭代器。

In [185]: from collections import Iterable                            In [186]: isinstance(f, Iterable)                                 Out[186]: False In [187]: iter(f)                                         Out[187]: <iterator at 0x114f2be50>
dir(f)                                         Out[189]:['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網之家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人在线观看网站 | 久久国产精品影视 | 欧美一级爱操视频 | 黄色大片在线免费看 | 牛牛a级毛片在线播放 | 欧美激情综合网 | 少妇一级淫片免费看 | 影视免费观看 | 久草在线播放视频 | 精品久久久一二三区播放播放播放视频 | 中文欧美日韩 | 国产一区二区三区在线视频 | 国产一级毛片av | 99国产精成人午夜视频一区二区 | 成人在线免费视频播放 | 亚洲性生活免费视频 | 亚洲91网 | 久色网站 | h视频免费在线观看 | 视频在线91 | 九九视频在线观看黄 | 国产在线观看av | 黑人操穴 | 一级黄色国产视频 | 欧美性激情视频 | 亚州综合 | 日本黄色免费片 | 天天看天天摸天天操 | 国产91精品一区二区麻豆亚洲 | 作爱在线观看 | 国产午夜精品久久久久久免费视 | 港台三级在线观看 | 精品1 | 久久精品亚洲欧美日韩精品中文字幕 | 国产乱xxxx | 国产欧美日韩视频在线观看 | 中文字幕精品一二三四五六七八 | qyl在线视频精品免费观看 | 日韩深夜视频 | 好吊色欧美一区二区三区四区 | 91av在线免费播放 |