Python3.8對可迭代解包的改進(jìn)及用法詳解
Python 3 的可迭代解包
在 PEP 3132 - Extended Iterable Unpacking 里面描述了一種對可迭代對象的解包用法,Python 3 可用:
In : a, *b, c = range(5) In : a, c Out: (0, 4) In : b Out: [1, 2, 3] In : *a, = range(5) In : a Out: [0, 1, 2, 3, 4] In : for a, *b in [(1, 2, 3), (4, 5, 6, 7)]: ...: print(b) ...: [2, 3] [5, 6, 7]
挺方便的,ES6 也有對應(yīng)的destructuring assignment語法實(shí)現(xiàn)解包數(shù)組,不過人家實(shí)現(xiàn)的更徹底,還可以解包對象。
不過在 Python 3.2 時引入了一個 BUG??匆粋€例子:
In : def a(): ...: rest = (4, 5, 6) ...: t = 1, 2, 3, *rest ...: return t ...: In : for i in a(): ...: print(i) ...:
其實(shí)這是一個非常簡化的寫法,要不然需要把 1,2,3 放在一個元組中,再 + rest:
In : (1, 2, 3) + (3, 4, 5, 6) Out: (1, 2, 3, 4, 5, 6)
但是上面這個例子稍微改一下:
In : def b(): ...: rest = (4, 5, 6) ...: return 1, 2, 3, *rest File "<ipython-input-38-b5a7115853e2>", line 3 return 1, 2, 3, *rest ^ SyntaxError: invalid syntax
不用變量 t, 直接返回就會拋 SyntaxError,另外就是 yield (當(dāng)然要注意 return 和 yield 本身的意見不同啊):
In : def c(): ...: rest = (4, 5, 6) ...: yield 1, 2, 3, *rest File "<ipython-input-39-cf6991fcff64>", line 3 yield 1, 2, 3, *rest ^ SyntaxError: invalid syntax Python 3.8
在 Python 3.8,修復(fù)了這個問題:
>>> def b(): ... rest = (4, 5, 6) ... return 1, 2, 3, *rest ... >>> for i in b(): ... print(i) ... >>> def c(): ... rest = (4, 5, 6) ... yield 1, 2, 3, *rest ... >>> for i in c(): ... print(i) ... (1, 2, 3, 4, 5, 6)
總結(jié)
以上所述是小編給大家介紹的Python3.8對可迭代解包的改進(jìn)及用法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
python多進(jìn)程日志以及分布式日志的實(shí)現(xiàn)方式
這篇文章主要介紹了python多進(jìn)程日志以及分布式日志的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06初學(xué)者學(xué)習(xí)Python好還是Java好
在本篇文章里小編給大家分享的是關(guān)于初學(xué)者學(xué)習(xí)Python好還是Java好的相關(guān)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-05-05Python利用多線程同步鎖實(shí)現(xiàn)多窗口訂票系統(tǒng)(推薦)
這篇文章主要介紹了Python利用多線程同步鎖實(shí)現(xiàn)多窗口訂票系統(tǒng),主要是利用threading.lock()通過實(shí)例代碼相結(jié)合給大家講解的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12python運(yùn)行cmd命令行的3種方法總結(jié)
雖然python在調(diào)用cmd命令方面使用的比較少,不過還是要用的,下面這篇文章主要給大家介紹了關(guān)于python運(yùn)行cmd命令行的3種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Python 微信之獲取好友昵稱并制作wordcloud的實(shí)例
今天小編就為大家分享一篇Python 微信之獲取好友昵稱并制作wordcloud的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02Python爬取股票信息,并可視化數(shù)據(jù)的示例
這篇文章主要介紹了Python爬取股票信息,并可視化數(shù)據(jù)的示例,幫助大家更好的理解和使用python爬蟲,感興趣的朋友可以了解下2020-09-09