您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python 3.9新方法是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python 3.9新方法是什么文章都會有所收獲,下面我們一起來看看吧。
str.removeprefix
和 str.removesuffix
這將成為粉絲最喜歡的功能,因為它解決了 Python 舊 str
方法中一些混亂的東西 。
假設你想從文件名中刪除擴展名.py
,你會怎么做呢?你認為當然可以使用 str.rstrip
函數從字符串的右端去除擴展名,這個方方法是可以的:
>>> file_string = 'my_test_file.py'
>>> file_name = file_string.rstrip('.py')
>>> file_name
'my_test_file'
除了這一個致命的問題。看看你是否能找到這個輸出的問題:
>>> file_string = 'make_happy.py'
>>> file_name = file_string.rstrip('.py')
>>> file_name
'make_ha'
為什么它刪除了部分文件名?
嗯...這是因為 rstrip
(以及 lstrip
and strip
)不接受“字符串”,而是一組要刪除的字符。因此, file_string.rstrip('.py')
并不意味著只刪除 .py
,它還意味著刪除以下任何字符: .
, p
,
and y
,這就是為什么我們文件名末尾是ppy
的也會被刪除了。正是因為這個方法,在許多其他 Pythonistas
中容易引起了錯誤和混亂。
這就是為什么Python的3.9添加了兩個新方法: str.removeprefix
和 str.removesuffix
,它們會處理給定的字符串作為一個字符串:
>>> file_string = 'make_happy.py'
>>> file_name = file_string.removesuffix('.py')
>>> file_name
'make_happy'
dict
合并和更新語法Python 字典已經可以合并和更新,如下所示:
>>> alice = {'apples': 1, 'bananas': 2}
>>> bob = {'carrots': 3}
>>> merged = {**alice, **bob} # Dictionary unpacking added in Python 3.5
>>> merged
{'apples': 1, 'bananas': 2, 'carrots': 3}
>>> alice
{'apples': 1, 'bananas': 2}
>>> alice.update(bob) # Updates alice in-place with bob's values
>>> alice
{'apples': 1, 'bananas': 2, 'carrots': 3}
由于合并和更新是字典非常常用的功能(就像集合一樣),這個新添加的操作簡單地使這些操作更簡單, |
操作符為:
>>> alice = {'apples': 1, 'bananas': 2}
>>> bob = {'carrots': 3}
>>> merged = alice | bob # Merges the two into a new dictionary
>>> merged
{'apples': 1, 'bananas': 2, 'carrots': 3}
>>> alice
{'apples': 1, 'bananas': 2}
>>> alice |= bob # Updates alice in-place
>>> alice
{'apples': 1, 'bananas': 2, 'carrots': 3}
>>>
我個人是這個功能的超級粉絲——如果你使用類型注釋,你也會喜歡這個。在Python 3.9開始,你就可以開始使用所有內置集合類型: list
, dict
, set
, collections.deque
等你的類型的注釋,而不是 typing.List
, typing.Deque
等,也不需要更多的 typing
導入!
# Previously:
from collections import defaultdict
from typing import DefaultDict, List, Set
values: List[int] = []
words: Set[str] = set()
counts: DefaultDict[int, int] = defaultdict(int)
# Starting from Python 3.9:
from collections import defaultdict
values: list[int] = []
words: set[str] = set()
counts: defaultdict[int, int] = defaultdict(int)
Python 3.9 引入了兩個新模塊:
zoneinfo
這為標準庫帶來了對 IANA 時區數據庫的支持。這意味著 Python 現在內置了對夏令時、國家全年時間變化等內容的支持。
graphlib
它具有拓撲排序算法的實現。因此,您現在擁有解決復雜圖形問題的內置方法,例如在構建系統中對依賴項進行排序。
CPython
現在使用基于PEG
的新解析器 ,而不是基于舊的LL1
算法的解析器。這意味著,對于可以將哪種語法添加到 Python 中存在某些限制,因為舊的解析器根本無法讀取更復雜的代碼。
多行with 語句就是一個例子 :
# Previously:
with open('file1.txt') as f1, \
open('file2.txt') as f2:
print(f1.read())
print(f2.read())
通常你會在多行語句周圍使用括號以獲得更易讀的行分組,并避免在行尾放置尾隨 \-es
。
但是 Python 3.8 中的舊解析器不支持這種語法:
# Starting from Python 3.9:
with (
open('file1.txt') as f1,
open('file2.txt') as f2,
):
print(f1.read())
print(f2.read())
PEG
如果將來需要,新的和改進的 解析器算法將能夠處理更復雜的語法解析。
CPython采用年度發布周期,即每年發布一個新的CPython小版本。
random.Random.randbytes
生成隨機字節的新 方法。
該 __file__
內置變量始終是目前的絕對路徑。
sys.stderr
從 Python 3.9 開始總是行緩沖。
ast
模塊更新:
將 AST 轉換回代碼的新ast.unparse方法。
在ast.dump中() 添加 indent用于縮進的選項 ,類似于 json.dumps.
PEP 614
,放寬了對裝飾器的語法限制。
關于“Python 3.9新方法是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Python 3.9新方法是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。