中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 3.9新方法是什么

發布時間:2022-01-26 09:24:42 來源:億速云 閱讀:148 作者:iii 欄目:開發技術

這篇文章主要介紹了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 有一個新的、更強大的解析器

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新方法是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹棱县| 正定县| 阿克陶县| 历史| 六盘水市| 临清市| 赤城县| 潼关县| 渝中区| 南召县| 邢台县| 毕节市| 新建县| 日喀则市| 莱西市| 静宁县| 澜沧| 襄垣县| 库伦旗| 忻州市| 瓦房店市| 福州市| 泗水县| 广德县| 九台市| 格尔木市| 武山县| 河池市| 沈丘县| 五原县| 堆龙德庆县| 新郑市| 耿马| 延津县| 库车县| 德州市| 安宁市| 西乌| 临沂市| 潢川县| 荆门市|