#分享 Pycon TW 2019:PEP 572: The Walrus Operator - Dustin Ingram

讚嘆上週公司出錢讓 data team 參加 Pycon,所以趁颱風假整理一下本次 conf 的收穫 傳送門:
共筆:
投影片:
不知道大家認不認識 Python 的作者,也就是被稱為仁慈的獨裁者 - Guido van Rossum 吉多·范羅蘇姆(荷蘭語:Guido van Rossum,1956年1月31日-),生於荷蘭哈勒姆,電腦程式設計師,為Python程式設計語言的最初設計者及主要架構師。在Python社群,吉多·范羅蘇姆被人們認為是終身仁慈獨裁者(BDFL),意思是他仍然關注Python的開發行程,並在必要的時刻做出決定。2018年7月12日,他宣布不再擔任Python社群的BDFL。
megapx
本篇就是要介紹到底是什麼事情讓 Guido 憤而退位的?PEP 572 到底談論了什麼? 在回答這些問題之前,讓我們先聊聊什麼是 PEP,PEP 是 Python Enhancement Proposal 的縮寫,每次 Python 想要新增新 feature 的人就會寫出一份 proposal 出來給社群看看 Proposal 寫出來了,那要怎樣才會進入實作階段呢?會經過幾次 email 的來回討論,然後經過 delegate 的批准才會進入 implementation 的階段
megapx
這些灰色的人頭就是 Guido 的 delegate,因為 PEP 很多一個人看不完所以需要人幫忙囉
megapx
BTW,寫 Python 都一定聽過的 PEP8,就是按照這個程序出現的囉,而且作者還是 Guido
megapx
講完什麼是 PEP 了,那 PEP 572 是在吵什麼?什麼是 The Walrus Operator?因為 PEP 572 定義了一個新的 Operator
megapx
是不是很像海象XD
megapx
Pros and Cons Pros: 假設你有個 List Comprehension,而 f(x) 是重的運算
megapx
為了不要重複運算,你會獨立出去
megapx
而 Walrus Operator 提供了一種 Syntax Sugar,讓語法變得更簡潔,好處簡潔明瞭
megapx
再給一個很屌的範例:
megapx
看到這麼簡潔的語法真的很爽XD
megapx
不過有人支持就會有人反對拉,反對的主要理由是因為PEP 572 並沒有限 Assignment Expressions 變數的作用域。
megapx
另一個理由是老師在教新手 Python 的時候很難解釋 Walrus Operator,這點我認同,不過就不要教新手這種觀念就好XD 總之負面回饋太多,Guido 最後身心俱疲就卸下領導人的位子
megapx
但前面說到,Python 要新增功能都要經過 Guido 或是 delegate 批准,那 Python 社群已經停擺了嗎?
megapx
並沒有,而且 Python 還準備要推出 3.8 呢,自從 Guido 卸任之後,社群從 PEP 8000開始討論,最後決定採取指導委員會管理模式
megapx
而 Guido 也是委員會的一員
以上就是故事的來龍去脈拉XD
愛心
14
3
全部留言