迭代器(iterator):迭代器物件必須同時實作__iter__和__next__方法才是迭代器。對於迭代器來說,__iter__ 回傳的是它自身 self,__next__ 則是返回迭代器中的下一個值,最後沒有元素時,拋出異常(異常可以被開發者看到)。
1.迭代器一定是可迭代對象,因為它實作了__iter__()方法;(建議學習:Python影片教學)
2.透過iter()方法(在類別的內部就是__iter__)能夠使一個可迭代物件回傳一個迭代器。
3.迭代器的 __iter__ 方法回傳的是自身,並不會產生新的迭代器物件。
第3點性質正是可迭代物件可以重複遍歷的原因(每次返回一個獨立的迭代器,就可以保證不同的迭代過程不會互相影響);而迭代器由於返回自身,因此只能遍歷一次。
for迴圈的工作機制
當物件本身就是迭代器時,For迴圈工作機制:
呼叫_ _iter__方法,返回自身self,也就是返回迭代器。不斷地呼叫迭代器的next()方法,每次依序傳回迭代器中的一個值。迭代到最後沒有元素時,就拋出異常StopIteration
在可迭代物件中,for循環工作機制:
先判斷物件是否為可迭代物件(等價於判斷有沒有__iter__或__getitem__方法),沒有的話直接報錯,拋出TypeError異常。有的話,呼叫 __iter__方法,回傳一個迭代器。在python內部不斷地呼叫迭代器的__next__方法,每次依序傳回迭代器中的一個值。迭代到最後沒有元素時,就拋出異常 StopIteration,這個異常 python 自己會處理,不會暴露給開發者。
此外,也要注意,python中的for迴圈其實相容了兩個機制:
如果物件有__iter__會回傳一個迭代器。如果物件沒有__iter__,但是實作了__getitem__,會改用下標迭代的方式。 __getitem__可以幫助一個物件進行取數和切片操作。
當for發現沒有__iter__但是有__getitem__的時候,會從0開始依次讀取對應的下標,直到發生IndexError為止,這是一種舊的迭代協定。 iter方法也會處理這種情況,在不存在__iter__的時候,回傳一個下標迭代的iterator物件來代替。一個重要的例子是str,字串就是沒有__iter__方法的,但是卻依然可以迭代,原因就是其在for迴圈時呼叫了__getitem__方法。
更多Python相關技術文章,請造訪Python教學欄位學習!
以上是python迭代器和for迴圈區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),