python生成器呼叫方法引發異常
(推薦作業系統:windows7系統、Python 3.9.1、DELL G3電腦。)
注意,在生成器已經執行時呼叫下面的任何生成器方法會引發 ValueError 異常。
1、__next__
開始執行一個生成器或者從上一次 yield 語句後繼續執行。當使用該方法繼續(注意是繼續而不是第一次執行)時,那麼當前 yield 的返回值為 None,直到執行到下一次的 yield 語句時,yield 語句後的表示式的結果才會返回給呼叫者。當迭代器結束時會丟擲 StopIteration 異常。
該方法會被 for 以及內建函式 next 隱式的呼叫。
2、send
繼續執行生成器(注意是繼續而不是第一次執行),併傳送一個值到生成器函式。send 方法的引數是下一個 yield 語句的返回值,前提是 yield 語句中要事先接收它傳遞的引數。如果使用該方法啟動(也就是第一次執行)生成器,必須使用 None 作為其引數,因為此時還沒有 yield 能夠接收它的值(畢竟接收該值的語句還沒有開始執行)。
def fn(): a = 0 while True: a += 1 r = yield # r 就是接收 send 引數的變數 print('{} => {}'.format(a, r)) >>> f = fn() >>> f.send('a') # 不傳遞 None 的後果 Traceback (most recent call last): File "/opt/python3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2910, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-31-6f758a7cad28>", line 1, in <module> f.send('a') TypeError: can't send non-None value to a just-started generator >>> next(f) # 也可以不傳遞 None 而是使用 next 執行,兩種方式都可以 >>> f.send('a') 1 => a >>> f.send('b') 2 => b
以上就是python生成器呼叫方法引發異常,希望能對大家有所幫助。更多Python學習指路:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4606/viewspace-2830544/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python自定義異常,使用raise引發異常PythonAI
- 異常和異常呼叫鏈
- 【Spring Cloud】Feign呼叫異常觸發降級後如何捕獲異常SpringCloud
- QPainter呼叫setBrush異常退出AI
- 【高併發】由InterruptedException異常引發的思考Exception
- 一次 Jedis 引數異常引發服務雪崩
- 一場 Kafka CRC 異常引發的血案Kafka
- pb呼叫ole異常捕獲
- 深度覆盤-重啟 etcd 引發的異常
- 解析python生成器函式的呼叫Python函式
- 異常檢測(Anomaly Detection)方法與Python實現Python
- Bulk 異常引發的 Elasticsearch 記憶體洩漏Elasticsearch記憶體
- Python——異常處理Python
- Python異常處理Python
- python異常捕獲Python
- DNS伺服器故障引發流量異常問題-VeCloudDNS伺服器Cloud
- 一次訊號量引發的tomcat異常退出Tomcat
- JVM實戰調優(空格引發的服務異常)JVM
- [譯] Ruby 2.6 Kernel 的system 方法增加是否丟擲異常引數。
- [譯] Ruby 2.6 增加了 Integer 和 Float 方法的異常引數
- python request.post異常Python
- python異常捕捉處理Python
- python錯誤與異常Python
- Python Selenium異常處理Python
- python try異常處理Python
- 異常-Throwable的幾個常見方法
- Android開發:系統程式中使用Webview引發異常的處理AndroidWebView
- MongoDB 異常當機與引數cacheSizeGBMongoDB
- Java自定義異常的建立及多層呼叫Java
- python中getattr如何帶引數呼叫?Python
- python應用:異常處理Python
- Python基礎 -- 異常處理Python
- python中如何捕獲異常Python
- python的檔案和異常Python
- python異常處理之returnPython
- Kotlin藝術探索之引數和異常Kotlin
- 什麼是異常?python處理異常的方式有幾種?Python
- Python生成器next方法和send方法區別Python