python没有用_你可能没有在Python3中使用但却应该使用的东西
Python部落(python.freelycode.com)組織翻譯,禁止轉(zhuǎn)載,歡迎轉(zhuǎn)發(fā)。
由于Python EOL的發(fā)布,許多人開(kāi)始將他們的Python版本從2切換到3。不幸的是,我發(fā)現(xiàn)大多數(shù)Python3看起來(lái)仍然像Python2,但是要加括號(hào)(盡管在我之前的文章《使用Python進(jìn)行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問(wèn)題變得更容易。
所有示例都是在Python 3.7中編寫(xiě)的,每個(gè)特性都包含該特性所需的最低Python版本。
f-strings (3.6+)
在任何編程語(yǔ)言中,沒(méi)有字符串是很難做任何事情的,為了保持理智,你希望有一種結(jié)構(gòu)化的方法來(lái)處理字符串。大多數(shù)使用Python的人更喜歡使用format方法。
除了format,Python 3還提供了一種通過(guò)f-strings進(jìn)行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:
Pathlib (3.4+)
f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫(kù),這使得它們的操作更加容易。Python 3提供了pathlib作為一個(gè)處理文件路徑的方便抽象。如果你不確定為什么你應(yīng)該使用pathlib,試著閱讀這篇優(yōu)秀的文章——《為什么你應(yīng)該使用pathlib》——Trey Hunner。
類(lèi)型提示 (3.5+)
靜態(tài)和動(dòng)態(tài)類(lèi)型是軟件工程中一個(gè)熱門(mén)的話(huà)題,幾乎每個(gè)人都對(duì)此有自己的看法。我將讓讀者決定何時(shí)應(yīng)該編寫(xiě)類(lèi)型,但我認(rèn)為你至少應(yīng)該知道Python 3支持類(lèi)型提示。
枚舉 (3.4+)
Python 3提供了一種通過(guò)Enum類(lèi)來(lái)編寫(xiě)枚舉的簡(jiǎn)單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會(huì)在沒(méi)有太多結(jié)構(gòu)的情況下隨機(jī)分布在你的代碼中。
枚舉是一組符號(hào)名稱(chēng)(成員),它們綁定到惟一的常量值。在枚舉中,可以通過(guò)標(biāo)識(shí)對(duì)成員進(jìn)行比較,并且枚舉本身也可以被遍 歷。
內(nèi)置的 LRU 緩存 (3.2+)
緩存存在于我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過(guò)將LRU(最近最少使用的)緩存公開(kāi)為一個(gè)名為lru_cache的裝飾器,使得使用它們變得非常簡(jiǎn)單。
下面是一個(gè)簡(jiǎn)單的Fibonacci函數(shù),我們知道它將從緩存中受益,因?yàn)樗ㄟ^(guò)遞歸多次執(zhí)行相同的任務(wù)。
現(xiàn)在我們可以使用lru_cache對(duì)其進(jìn)行優(yōu)化(這種優(yōu)化技術(shù)稱(chēng)為memoization(記憶化))。執(zhí)行時(shí)間從幾秒降到幾納秒。
擴(kuò)展的可迭代對(duì)象解包 (3.0+)
數(shù)據(jù)類(lèi) (3.7+)
Python 3引入了數(shù)據(jù)類(lèi),這些數(shù)據(jù)類(lèi)并沒(méi)有太多限制,可以使用它們來(lái)減少樣板代碼,因?yàn)檠b飾器會(huì)自動(dòng)生成特殊的方法,比如__init__() 和__repr()__。根據(jù)官方建議,它們被描述為“具有默認(rèn)值的可變命名元組”。
使用數(shù)據(jù)類(lèi)的Armor的相同實(shí)現(xiàn)。
隱式命名空間包 (3.3+)
結(jié)構(gòu)化Python代碼的一種方法是在包中(帶有一個(gè)__init__.py文件的文件夾)。下面的示例是由官方Python文檔提供的。
在Python2中,上面的每個(gè)文件夾都必須有一個(gè)__init__.py文件,它會(huì)將該文件夾轉(zhuǎn)換為一個(gè)Python包。在Python3中,隨著隱式命名空間包的引入,這些文件就不再需要了。
編者注:正如一些人所說(shuō),這并不像我在本節(jié)中指出的那樣簡(jiǎn)單,從官方的PEP 420規(guī)范來(lái)看——__init__.py對(duì)于普通包仍然是必需的,將它從文件夾結(jié)構(gòu)中刪除將會(huì)把文件夾變成一個(gè)帶有附加限制的本地命名空間包,關(guān)于本機(jī)命名空間包的官方文檔對(duì)此展示了一個(gè)很好的例子,以及命名所有的限制。
結(jié)束語(yǔ)英文原文:https://datawhatnow.com/things-you-are-probably-not-using-in-python-3-but-should/
譯者:野生大熊貓
總結(jié)
以上是生活随笔為你收集整理的python没有用_你可能没有在Python3中使用但却应该使用的东西的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 怎么下载php源文件,设计了一个php下
- 下一篇: bios设置_bios怎么设置显存 bi