'你可能沒有在Python3中使用但卻應該使用的東西'

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

你可能沒有在Python3中使用但卻應該使用的東西

現在我們可以使用lru_cache對其進行優化(這種優化技術稱為memoization(記憶化))。執行時間從幾秒降到幾納秒。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

你可能沒有在Python3中使用但卻應該使用的東西

現在我們可以使用lru_cache對其進行優化(這種優化技術稱為memoization(記憶化))。執行時間從幾秒降到幾納秒。

你可能沒有在Python3中使用但卻應該使用的東西

擴展的可迭代對象解包 (3.0+)

請查看代碼(文檔 https://www.python.org/dev/peps/pep-3132/ )。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

你可能沒有在Python3中使用但卻應該使用的東西

現在我們可以使用lru_cache對其進行優化(這種優化技術稱為memoization(記憶化))。執行時間從幾秒降到幾納秒。

你可能沒有在Python3中使用但卻應該使用的東西

擴展的可迭代對象解包 (3.0+)

請查看代碼(文檔 https://www.python.org/dev/peps/pep-3132/ )。

你可能沒有在Python3中使用但卻應該使用的東西

數據類 (3.7+)

Python 3引入了數據類,這些數據類並沒有太多限制,可以使用它們來減少樣板代碼,因為裝飾器會自動生成特殊的方法,比如__init__() 和__repr()__。根據官方建議,它們被描述為“具有默認值的可變命名元組”。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

你可能沒有在Python3中使用但卻應該使用的東西

現在我們可以使用lru_cache對其進行優化(這種優化技術稱為memoization(記憶化))。執行時間從幾秒降到幾納秒。

你可能沒有在Python3中使用但卻應該使用的東西

擴展的可迭代對象解包 (3.0+)

請查看代碼(文檔 https://www.python.org/dev/peps/pep-3132/ )。

你可能沒有在Python3中使用但卻應該使用的東西

數據類 (3.7+)

Python 3引入了數據類,這些數據類並沒有太多限制,可以使用它們來減少樣板代碼,因為裝飾器會自動生成特殊的方法,比如__init__() 和__repr()__。根據官方建議,它們被描述為“具有默認值的可變命名元組”。

你可能沒有在Python3中使用但卻應該使用的東西

使用數據類的Armor的相同實現。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

你可能沒有在Python3中使用但卻應該使用的東西

現在我們可以使用lru_cache對其進行優化(這種優化技術稱為memoization(記憶化))。執行時間從幾秒降到幾納秒。

你可能沒有在Python3中使用但卻應該使用的東西

擴展的可迭代對象解包 (3.0+)

請查看代碼(文檔 https://www.python.org/dev/peps/pep-3132/ )。

你可能沒有在Python3中使用但卻應該使用的東西

數據類 (3.7+)

Python 3引入了數據類,這些數據類並沒有太多限制,可以使用它們來減少樣板代碼,因為裝飾器會自動生成特殊的方法,比如__init__() 和__repr()__。根據官方建議,它們被描述為“具有默認值的可變命名元組”。

你可能沒有在Python3中使用但卻應該使用的東西

使用數據類的Armor的相同實現。

你可能沒有在Python3中使用但卻應該使用的東西

隱式命名空間包 (3.3+)

結構化Python代碼的一種方法是在包中(帶有一個__init__.py文件的文件夾)。下面的示例是由官方Python文檔提供的。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

你可能沒有在Python3中使用但卻應該使用的東西

現在我們可以使用lru_cache對其進行優化(這種優化技術稱為memoization(記憶化))。執行時間從幾秒降到幾納秒。

你可能沒有在Python3中使用但卻應該使用的東西

擴展的可迭代對象解包 (3.0+)

請查看代碼(文檔 https://www.python.org/dev/peps/pep-3132/ )。

你可能沒有在Python3中使用但卻應該使用的東西

數據類 (3.7+)

Python 3引入了數據類,這些數據類並沒有太多限制,可以使用它們來減少樣板代碼,因為裝飾器會自動生成特殊的方法,比如__init__() 和__repr()__。根據官方建議,它們被描述為“具有默認值的可變命名元組”。

你可能沒有在Python3中使用但卻應該使用的東西

使用數據類的Armor的相同實現。

你可能沒有在Python3中使用但卻應該使用的東西

隱式命名空間包 (3.3+)

結構化Python代碼的一種方法是在包中(帶有一個__init__.py文件的文件夾)。下面的示例是由官方Python文檔提供的。

你可能沒有在Python3中使用但卻應該使用的東西

在Python2中,上面的每個文件夾都必須有一個__init__.py文件,它會將該文件夾轉換為一個Python包。在Python3中,隨著隱式命名空間包的引入,這些文件就不再需要了。

"

由於Python EOL的發佈,許多人開始將他們的Python版本從2切換到3。不幸的是,我發現大多數Python3看起來仍然像Python2,但是要加括號(儘管在我之前的文章《使用Python進行web抓取介紹》中的代碼示例也是這樣)。下面,我將展示一些令人興奮的特性示例,你只能在Python3中使用它們,希望它可以讓你使用Python解決問題變得更容易。

所有示例都是在Python 3.7中編寫的,每個特性都包含該特性所需的最低Python版本。

f-strings (3.6+)

在任何編程語言中,沒有字符串是很難做任何事情的,為了保持理智,你希望有一種結構化的方法來處理字符串。大多數使用Python的人更喜歡使用format方法。

你可能沒有在Python3中使用但卻應該使用的東西

除了format,Python 3還提供了一種通過f-strings進行字符串插值的靈活方法。和上面一樣使用f-strings的代碼是這樣的:

你可能沒有在Python3中使用但卻應該使用的東西

Pathlib (3.4+)

f-strings非常棒,但是有些字符串(比如文件路徑)有自己的庫,這使得它們的操作更加容易。Python 3提供了pathlib作為一個處理文件路徑的方便抽象。如果你不確定為什麼你應該使用pathlib,試著閱讀這篇優秀的文章——《為什麼你應該使用pathlib》——Trey Hunner。

你可能沒有在Python3中使用但卻應該使用的東西

類型提示 (3.5+)

靜態和動態類型是軟件工程中一個熱門的話題,幾乎每個人都對此有自己的看法。我將讓讀者決定何時應該編寫類型,但我認為你至少應該知道Python 3支持類型提示。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉 (3.4+)

Python 3提供了一種通過Enum類來編寫枚舉的簡單方法。枚舉是封裝常量列表的一種方便的方法,因此它們不會在沒有太多結構的情況下隨機分佈在你的代碼中。

你可能沒有在Python3中使用但卻應該使用的東西

枚舉是一組符號名稱(成員),它們綁定到惟一的常量值。在枚舉中,可以通過標識對成員進行比較,並且枚舉本身也可以被遍歷。https://docs.python.org/3/library/enum.html

你可能沒有在Python3中使用但卻應該使用的東西

內置的 LRU 緩存 (3.2+)

緩存存在於我們今天使用的幾乎所有水平的軟件和硬件中。Python 3通過將LRU(最近最少使用的)緩存公開為一個名為lru_cache的裝飾器,使得使用它們變得非常簡單。

下面是一個簡單的Fibonacci函數,我們知道它將從緩存中受益,因為它通過遞歸多次執行相同的任務。

你可能沒有在Python3中使用但卻應該使用的東西

現在我們可以使用lru_cache對其進行優化(這種優化技術稱為memoization(記憶化))。執行時間從幾秒降到幾納秒。

你可能沒有在Python3中使用但卻應該使用的東西

擴展的可迭代對象解包 (3.0+)

請查看代碼(文檔 https://www.python.org/dev/peps/pep-3132/ )。

你可能沒有在Python3中使用但卻應該使用的東西

數據類 (3.7+)

Python 3引入了數據類,這些數據類並沒有太多限制,可以使用它們來減少樣板代碼,因為裝飾器會自動生成特殊的方法,比如__init__() 和__repr()__。根據官方建議,它們被描述為“具有默認值的可變命名元組”。

你可能沒有在Python3中使用但卻應該使用的東西

使用數據類的Armor的相同實現。

你可能沒有在Python3中使用但卻應該使用的東西

隱式命名空間包 (3.3+)

結構化Python代碼的一種方法是在包中(帶有一個__init__.py文件的文件夾)。下面的示例是由官方Python文檔提供的。

你可能沒有在Python3中使用但卻應該使用的東西

在Python2中,上面的每個文件夾都必須有一個__init__.py文件,它會將該文件夾轉換為一個Python包。在Python3中,隨著隱式命名空間包的引入,這些文件就不再需要了。

你可能沒有在Python3中使用但卻應該使用的東西

編者注:正如一些人所說,這並不像我在本節中指出的那樣簡單,從官方的PEP 420規範來看——__init__.py對於普通包仍然是必需的,將它從文件夾結構中刪除將會把文件夾變成一個帶有附加限制的本地命名空間包,關於本機命名空間包的官方文檔對此展示了一個很好的例子,以及命名所有的限制。

結束語

就像互聯網上幾乎所有的列表一樣,本列表並不完整。我希望這篇文章至少向你展示了一個你以前並不知道的Python 3功能,它將幫助你編寫更簡潔、更直觀的代碼。一如既往,所有的代碼都可以在GitHub上找到。

(https://github.com/Weenkus/DataWhatNow-Codes/blob/master/things_you_are_probably_not_using_in_python_3_but_should/python%203%20examples.ipynb )

英文原文:https://datawhatnow.com/things-you-are-probably-not-using-in-python-3-but-should/

譯者:野生大熊貓

"

相關推薦

推薦中...