介紹:
在過去的幾十年里,Python 在編程或腳本語言領域為自己創造了一個名字。python 受到高度青睞的主要原因是其極端的用戶友好性。Python 還用于處理復雜的程序或編碼挑戰。
機器學習 (ML)、人工智能 (AI) 和數據科學等新興領域也滿足了學習這種語言的高需求。與 Java、C# 和其他語言等傳統語言相比,Python 是一種強大的編程語言,迅速成為開發人員、數據科學家和 AI/ML 愛好者的最愛。
Python 作為一種編程語言,有許多用例吸引了 IT 行業的學習者和專家。在基本層面上,Python 可以用作編程語言來練習數據結構和算法或開發簡單的項目或游戲。
Python 作為一種語言的多功能性使其用戶可以輕松擴展他們的項目并創建網站、軟件或預測模型。自動化正在接管 IT 行業的大部分領域,而 Python 作為用于自動化數據分析或數據科學任務的首選語言處于領先地位。
除此之外,Python 擁有大量的庫和強大的程序員社區,他們不斷為 Python 作為一種語言增加更多價值。
了解 Python 及其用例:
初學者被 Python 吸引的眾多原因之一是它的用戶友好性。Python 摒棄了令人生畏的分號,并使用簡單的縮進結構作為其語法。Python 還發現了一個用例作為需要可編程接口的應用程序的擴展。
Python 的其他一些好處包括其最令人垂涎的功能,即它的庫。Python 庫是一種巨大的資源,可用于許多關鍵的代碼編寫,例如:
- 基于正則表達式的代碼
- 字符串處理
- 互聯網協議,如 HTTP、FTP、SMTP、XML-RPC、POP、IMAP
- 統一碼
- 文件系統和計算文件之間的差異
- CGI編程
- 數學建模
- 數據庫查詢
- 數據分析
- 數據可視化
- 自動化代碼
所有這些功能都可以在許多 Unix、Linux、macOS 和 Windows 系統上執行。
分析 Python 3.9 V/s Python 3.10 的差異
多年來,Python 進行了大量升級,并且在新版本中添加了許多功能。在這里,讓我們關注 Python 添加的兩個最新版本。探索更新的功能可以幫助您順利使用它,當然,還可以找到使用更新庫的更智能的工作方式。
下面所附的所有代碼僅用于教育目的,并且取自與新版本(例如 Python 3.9 和 Python 3.10)一起發布的原始 Python 文檔
Python 3.9:
IANA 時區數據庫
在 Python 3.9 中創建了一個名為 zoneinfo 的新模塊。通過此模塊,您可以訪問 IANA 或互聯網號碼分配機構時區數據庫。默認情況下,此模塊使用系統的本地時區數據。
代碼 :
1
2
3
|
print (datetime( 2021 , 7 , 2 , 12 , 0 ).astimezone()) print (datetime( 2021 , 7 , 2 , 12 , 0 ).astimezone().strftime( "%Y-%m-%d %H:%M:%S %Z" )) print (datetime( 2021 , 7 , 2 , 12 , 0 ).astimezone(timezone.utc)) |
輸出 :
1
2
3
|
2020 - 07 - 2 12 : 00 : 00 - 05 : 00 2020 - 07 - 2 12 : 00 : 00 EST 2020 - 07 - 2 17 : 00 : 00 + 00 : 00 |
合并和更新字典的函數
Python 3.9 增加了另一個很酷的功能,引起了很多關注。Python 3.9 現在可以使用運算符合并或更新字典。新的運算符 ie ( | ) 和 ( |= ) 已添加到 Python 3.9 內置 dict 類中。
您可以使用類似于下面標記的代碼訪問這些運算符以合并或更新字典。
代碼 :
1
2
|
>>> a = {‘v ': 1, ' art ': 2, ' py': 3 } >>> b = { 'v' : 'd' , 'topic' : 'python3.9' } |
合并代碼:
1
2
3
4
|
>>> a | b { 'art' : 2 , 'py' : 3 , 'v' : 'd' , 'topic' : 'python3.9' } >>> b | a { 'v' : 1 , 'art' : 2 , 'py' : 3 , 'topic' : 'python3.9' } |
更新代碼:
1
2
3
|
>>> a | = b >>> a { 'art' : 2 , 'py' : 3 , 'v' : 'd' } |
刪除前綴和后綴
使用 Python 3.9 中添加的新功能可以更輕松地解決字符串處理問題。下面標記的代碼用于從示例字符串中去除前綴和后綴。以下示例代碼中使用的新方法是:
removeprefix() - 這個方法根據它的功能恰當地命名,它是去除給定樣本字符串中存在的前綴。removesuffix() – 此方法從傳遞給它的示例字符串中刪除現有的后綴。
由于程序員對其缺陷性質的負面評價,創建了這些新方法來替換舊的 strip() 方法。下面標記的是一個示例代碼,可以幫助您了解這兩種新方法的實現。
代碼 :
1
|
print ( "海擁在外面玩" .removeprefix( "海擁" )) |
輸出:
1
|
‘在外面玩' |
在 Python 3.9 中對內置泛型類型使用類型提示
Python 3.9 版本啟用了對所有標準集合的通用語法的支持功能,這些功能目前在輸入模塊中可用。泛型類型通常被定義為一個容器,例如一個列表。它是一種可以輕松參數化的類型。通常,泛型類型具有一種或多種類型的參數,而參數化泛型是具有容器元素的泛型數據類型的特定實例,例如,列表或字典內置集合類型是支持的各種類型,而不是專門支持的類型使用 Typing.Dict 或 typing.List
代碼 :
1
|
def print_value( input : str ): # 指定傳遞的值將是字符串類型 |
通過使用下面的方式,我們將能夠找到以下輸入是否為字符串
Python 3.10:
使用結構模式進行匹配
全新的 Python 3.10 中引入了一項稱為結構模式匹配的新功能。此匹配過程與相同的匹配案例邏輯一起運行,但它還與比較對象進行比較以跟蹤給定模式。
Python 3.9 的代碼:
1
2
3
4
5
6
7
8
9
|
http_code = "419" if http_code = = "200" : print ( "OK" ) elif http_code = = "404" : print ( "Not Found Here" ) elif http_code = = "419" : print ( "Value Found" ) else : print ( "Code not found" ) |
Python 3.10 的代碼:
1
2
3
4
5
6
7
8
9
10
|
http_code = "419" match http_code: case "200" : print ( "Hi" ) case "404" : print ( "Not Found" ) case "419" : print ( "You Found Me" ) case _: #Default Case print ( "Code not found" ) |
改進的語法錯誤消息
大量程序員在錯誤匹配或調試代碼方面面臨困難。Python 3.10 添加了一個非常用戶友好的特性,稱為關聯建議,它帶有語法錯誤消息標記。這有助于您快速找到其中存在錯誤或錯誤的代碼的修復程序。
代碼 :
1
2
|
named_car = 77 print (new_car) |
輸出 :
1
|
NameError: name 'new_car' is not defined. Did you mean: named_car? |
更好的類型提示
從 Python 3.9 升級,我們可以不使用 union 關鍵字而只使用 OR 符號來分配參數的多種輸入類型。為同一個變量定義多個輸入類型是一種更簡單的方法
Python 3.9 的代碼:
1
|
def add(a: Union[ int , float ], b: Union[ int , float ]): |
Python 3.10 的代碼:
1
|
def add(a: int | float , b: int | float ): |
改進的上下文管理器
上下文管理器有助于處理文件等資源。您現在可以在單個塊中使用多個上下文。這將大大增強您的代碼,因為您不再需要多個塊或語句。
以前的語法:
1
2
|
with open ( 'output.log' , 'rw' ) 作為 fout: fout.write( 'hello' ) |
最新語法:
1
2
|
with ( open ( 'output.log' , 'w' ) as fout, open ( 'input.csv' ) as fin): fout.write(fin.read()) |
到此這篇關于Python3.10和Python3.9版本之間的差異介紹的文章就介紹到這了,更多相關Python3.10和Python3.9版本差異內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.51cto.com/haiyongblog/4727895