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