摘要:二這些內(nèi)容都很有意思,本文唯獨想聊聊它內(nèi)置電池。這樣做的預(yù)期效果是內(nèi)置電池會變得輕量小型化高質(zhì)量,同時三方庫的生態(tài)系統(tǒng)也能得到進化。目前,該仍處于草案狀態(tài),但已基本成為社區(qū)共識。
本文原創(chuàng)并首發(fā)于公眾號【Python貓】,未經(jīng)授權(quán),請勿轉(zhuǎn)載。
原文地址:https://mp.weixin.qq.com/s/XzCqoCvcpFJt4A-E4WMqaA
(一)
最近,我突然想到一個問題:相比其它語言,有哪些概念或習(xí)慣叫法是 Python 特有的?
在朋友圈提出這個問題后,我得到最多的回復(fù)是——Pythonic 。這個回復(fù)一點都不意外,名字中自帶 Python 的,當然是特有的啦,與它相似的,還有 Pythonista 。
這兩個詞是啥意思呢?Python 圈內(nèi)流傳著一個說法“人生苦短,我用 Python”,人們相信存在著最佳的實踐方式,采用這種方式是最美的、最高效的、最優(yōu)雅的,也即是 Pythonic ,而這樣做的人(或以此為追求的人)則自稱是 Pythonista。這個稱號是有別于 Pythoner 或者 Pythonist 的,簡單地說就是,它更有追求、更有逼格。
除了以上兩個,Python 還有眾多獨特的叫法,例如終生仁慈獨裁者、裝飾器、上下文管理器、推導(dǎo)式與生成式、鴨子類型、猴子補丁、魔術(shù)方法、GIL、內(nèi)置電池,等等。它們有的并不是 Python 所原創(chuàng)或獨有,但是卻因為它才廣為人知,它們在 Python 中是代表性的存在物。
(二)
這些內(nèi)容都很有意思,本文唯獨想聊聊它——內(nèi)置電池 。
Batteries Included 這個叫法是 Python 特有的,它指的是 Python 擁有“內(nèi)置電池”,也就是自帶豐富多樣的標準庫,開箱即用,動力十足。
在《PEP 206 -- Python Advanced Library》中,它提出了“內(nèi)置電池的哲學(xué)”(Batteries Included Philosophy):擁有豐富而通用的標準庫,無需用戶多帶帶下載就能立即使用。還說這使得 Python 領(lǐng)先于很多項目。
根據(jù)官方文檔顯示,Python 內(nèi)置了 200 多個標準庫,類型豐富多樣,包括字符處理、數(shù)據(jù)類型、數(shù)值計算、文件處理、并發(fā)執(zhí)行、網(wǎng)絡(luò)通信、多媒體服務(wù)、圖形界面、調(diào)試與開發(fā)、以及操作系統(tǒng)專有服務(wù)等等。
內(nèi)置電池為 Python 提供了一種自給自足的能力(self-sufficient),在大多數(shù)情況下,用戶不需要再去下載和安裝多帶帶的軟件包,因此也免去一大堆的依賴問題的折磨。
(三)
某些編程語言中也有內(nèi)置電池的概念,例如 Perl、Ruby、PHP等等,還有的語言會強調(diào)自己內(nèi)置了強大的功能,例如 Erlang(一切皆進程)、Go(goroutine 機制)。
然而,這個叫法在 Python 中被叫得最響,也被推廣到了技術(shù)生態(tài)中的其它項目里,幾乎成了 Python 的專有名詞。
在維基百科上搜索“Batteries Included”,該條目有 4 個解釋,其中之一表明它是 Python 的 Motto ,這個詞的意思是座右銘、格言、箴言,足見分量之重了吧。
(四)
內(nèi)置電池做不到無所不包,因此需要所謂的第三方庫,而 Python 也以三方庫豐富而聞名。
PyPI 是 Python Package Index 的簡稱,即 Python 庫索引,是一個用來管理三方庫的項目,根據(jù)網(wǎng)站顯示,目前有 18 萬個三方庫,以及它們的 135 萬個發(fā)行版本。
就是說,Python 也擁有強大的外置電池,所以其實它是 雙驅(qū)動 的。
(五)
雙驅(qū)動本來相安無事,互為表里,但是,內(nèi)置電池卻遭到了越來越多的指責(zé)。
在今年 5 月的官方 PyCon 大會上,演講嘉賓 Amber Brown 做了專門的分享,主要話題就是吐槽這內(nèi)置電池正在“漏電”(Leaking):
應(yīng)用程序需要的不僅僅是標準庫
質(zhì)量差,功能落后,代碼過時
標準庫模塊排擠創(chuàng)新
她的想法是移除一些標準庫,例如 asyncio 及大多數(shù)的新特性,遷移到 PyPI,擁抱社區(qū)。這樣做的預(yù)期效果是:內(nèi)置電池會變得輕量小型化、高質(zhì)量,同時三方庫的生態(tài)系統(tǒng)也能得到進化。
其他開發(fā)人員對這個話題也進行了討論。
標準庫的維護團隊表示,遷移部分模塊的工作已經(jīng)在展開了,但這需要經(jīng)過仔細的設(shè)計,另外,不容忽視的是,遷移庫到 PyPI 也要求測試配置的工作量。
還有人提出反對意見,認為精簡標準庫可能會破壞下游代碼,而且有的企業(yè)用戶只信任標準庫而排斥三方庫,這無疑會增加用戶的負擔。
(六)
我們的很多電子設(shè)備都是由電池驅(qū)動的,雖然它們的形式與材質(zhì)各種各樣,但是不可避免會遇到老化的問題(某種手機甚至?xí)ǎ?/p>
Python 的內(nèi)置電池也不例外,可是,這個電池的修理或替換,卻不像物理世界的電池那般容易。
官方在十幾年前提出了 PEP-206 與 PEP-3108,那時核心開發(fā)者們就發(fā)現(xiàn)有些標準庫容易被入侵、設(shè)計不佳、有更好的替代庫,因此推薦了很多款第三方庫,以作為標準庫的替代選項。這些年來,很多廢棄的庫已退出舞臺,但更多的新庫也加了進來,革命尚未成功。
今年 5 月,在 PyCon 大會引發(fā)的討論之后,有開發(fā)者發(fā)起了 PEP-594,提議將“壞死的電池”(dead batteries)移出標準庫。
目前,該 PEP 仍處于草案(Draft)狀態(tài),但已基本成為社區(qū)共識。
PEP 中提議移除工作從 Python 3.8 開始,因為它的發(fā)布時間剛好在 Python 2.7 停止維護之前,可以平滑地承接大版本遷移的用戶。然后,按照有序的清理計劃,最終在 Python 3.10 版本完成所有廢棄模塊的移除。
也就是說,內(nèi)置電池的“手術(shù)”加速了,未來幾年里,這將成為一個常態(tài)。
(七)
內(nèi)置電池的哲學(xué)助力了 Python 發(fā)展壯大,攻城略地,成為最主流的編程語言之一。
然而它面臨的挑戰(zhàn)是:功能齊備與輕量可維的矛盾、官方支撐與社區(qū)分治的選擇,因此,必然會走到今天的局面。
正如任何大型項目都可能遇到內(nèi)存泄漏與性能退化的問題一樣,Python 這個項目也是。剔除壞死的組織,精兵簡政,革故鼎新,跟上時代,這些是 Python 核心團隊正在做的事。
從去年末以來,我持續(xù)關(guān)注著 Python 最高決策層的選舉,而在上個月,我恰好翻譯了一篇文章《GIL 已經(jīng)被殺死了么?》介紹了 GIL 的移除計劃。
這些事件都表明著一件事:Python 充滿活力,大蟒蛇蛻皮后,將會迎來新生。
我們何其幸運,正好作為見證者。其它就不用多說了,重溫一下這個偉大的口號吧——人生苦短,我用 Python。
公眾號【Python貓】, 本號連載優(yōu)質(zhì)的系列文章,有喵星哲學(xué)貓系列、Python進階系列、好書推薦系列、技術(shù)寫作、優(yōu)質(zhì)英文推薦與翻譯等等,歡迎關(guān)注哦。后臺回復(fù)“愛學(xué)習(xí)”,免費獲得一份學(xué)習(xí)大禮包。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44056.html
摘要:二這些內(nèi)容都很有意思,本文唯獨想聊聊它內(nèi)置電池。這樣做的預(yù)期效果是內(nèi)置電池會變得輕量小型化高質(zhì)量,同時三方庫的生態(tài)系統(tǒng)也能得到進化。目前,該仍處于草案狀態(tài),但已基本成為社區(qū)共識。 showImg(https://segmentfault.com/img/remote/1460000019489233?w=1880&h=1253); 本文原創(chuàng)并首發(fā)于公眾號【Python貓】,未經(jīng)授權(quán),請...
摘要:反對的意見主要是這樣可能會破壞掉無數(shù)個腳本,而且中已經(jīng)有太多的魔法了。除此之外,的命名本身也算是一種包袱。首字母大寫的,譯作史努比,則是一只被很多人喜愛的漫畫小狗。 showImg(https://segmentfault.com/img/remote/1460000019559250); 本文原創(chuàng)并首發(fā)于公眾號【Python貓】,未經(jīng)授權(quán),請勿轉(zhuǎn)載。 原文地址:https://mp....
閱讀 3469·2021-09-02 09:53
閱讀 1791·2021-08-26 14:13
閱讀 2750·2019-08-30 15:44
閱讀 1313·2019-08-30 14:03
閱讀 1961·2019-08-26 13:42
閱讀 3013·2019-08-26 12:21
閱讀 1302·2019-08-26 11:54
閱讀 1899·2019-08-26 10:46