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