Python3.9的7個特性
作者|PADHMA 編譯|VK 來源|Analytics Vidhya
介紹
正如著名作家韋恩•W•戴爾所說,
改變你看待事物的方式 你所看待的事物也會改變
當Python的新版本問世時,許多人擔心向後相容性問題和其他問題。但是如果你喜歡Python,你一定會對新更新中釋出的特性感到興奮。
Python的最新版本將於2020年10月5日(星期一)釋出。本文為你提供了一個python3.9特性的列表,你現在可以嘗試這些特性。
更新Python
讓我們首先更新到python的新版本。如果不確定當前使用的版本,請使用下面的程式碼檢查當前版本。
在cmd中,鍵入
要更新你的版本,請轉到Python下載頁面,獲取安裝包並開始安裝。注意:請確保更新環境變數中的路徑。
現在我們有了最新的版本,是時候檢查一下有什麼新特性了。
1.詞典更新
字典是Python中最有用和最常用的資料結構之一。新版本優化了合併和更新詞典的方式。
1.1合併詞典
假設我們有兩本字典dict1和dict2,
dict1包含汽車的名稱和型號,而dict2包含發動機和重量。
現在我們想合併這兩個字典,因為它們包含關於同一輛車的資訊。在python3.8及更早版本中,要合併兩個字典,我們可以使用
內建update方法:
或是表示式**:
這有時會帶來不便和麻煩。
在Python3.9.0中,我們使用| union運算子對語法進行了改進,以合併兩個dict,
這種方式非常乾淨、簡潔、坦率。它還提高了程式碼的可讀性。
如果兩個字典有一個公共鍵,那麼第二個字典中的值將被保留。
1.2更新字典
為了在Python3.8或更早版本中使用新的鍵值對更新現有字典,我們可以
使用update方法,
或者用iterable更新,
在3.9中,我們現在有了update操作符|=它以更簡單的方式完成相同的工作。
在這裡,|=的工作原理類似於擴充賦值運算子。
dict1 |=dict2表示dict1=dict1 | dict2
2型別提示
在正常情況下,我們不在Python中指定資料型別。但是在某些情況下,我們可能需要一個變數來表現某種型別。在這種情況下,Python的靈活性可能會令人討厭。從Python3.5開始,我們可以指定型別,但這次更新使事情變得更加簡單。
在這種情況下,傳遞給函式的值的型別非常重要。雖然程式碼中沒有錯誤,但是傳遞一個字串會將同一個字串重複兩次。
在最新版本中,通過型別提示(type hinting)我們可以將期望的型別指定為int,
3字串方法
str物件增加了兩個新特性。在探索性的資料分析過程中,這個特性有時會很有用。
從函式中刪除字首
從字串中刪除字尾
4數學函式
4.1 GCD
對現有的數學函式進行了修改。在早期版本中,計算GCD的函式只接受兩個數字。但現在,它可以應用於任何數量的值。
4.2 LCM
數學模組中新增了一個新函式來計算LCM。與GCD函式一樣,LCM函式也接受任意數量的值。
4.3 Nextafter
這個math.nextafter()函式接受x和y兩個引數。python3.9的這個特性是一個函式,考慮到浮點數精度,它是x向y的下一個浮點數。
4.4 ulp
假設我們沒有64位計算機。相反,我們只有3位數字。用這三個數字我們可以表示像3.14這樣的數字,但不能表示3.141。對於3.14,我們可以表示的最接近的較大數字是3.15,這兩個數字相差1 ULP(最後一位的單位),即0.1。返回值與這個示例相當,但與您的計算機的實際精度相同。
要詳細瞭解ULP,請檢視:https://matthew-brett.github.io/teaching/floating_error.html
5一致的包匯入錯誤
這與其說是一個特性,不如說是一個修復。當以前的Python匯入版本出現不一致時,它的早期匯入版本出現了 不一致的錯誤。
builtins.__import__() 引發 ValueError
importlib.__import__() 引發 ImportError
__import__()
現在引發ImportError而不是ValueError,這更有意義。
6隨機位元組生成
random模組中引入了一個名為randbytes的新方法來生成隨機位元組。Python已經可以通過3個不同的函式生成隨機位元組
- os.getrandom()
- os.urandom()
- secrets.token_bytes()
但它們不能產生偽隨機模式。
這個random.random.randbytes函式可以以受控的方式生成隨機位元組,並且可以通過設定種子複製結果。不過,它只能在安全性不重要的情況下使用。
7支援IANA時區
在時區庫zoneinfo中引入了一個新的支援IANA時區的模組。
考慮一個將印度標準時間轉換為德里當前時間的示例。在3.9之前,我們會通過pip安裝pytz,
對於zoneinfo模組,這是非常直接的。你可以直接匯入ZoneInfo類。
結論
除此之外,我們現在還有新的高效能的基於PEG的解析器、Graphlib模組、非同步和多處理改進、HTTP狀態程式碼和一堆冗餘特性被刪除。點此瞭解更多:https://docs.python.org/3.9/whatsnew/3.9.html
原文連結:https://www.analyticsvidhya.com/blog/2020/10/7-exciting-python-3-9-feature-to-know/
歡迎關注磐創AI部落格站: http://panchuang.net/
sklearn機器學習中文官方文件: http://sklearn123.com/
歡迎關注磐創部落格資源彙總站: http://docs.panchuang.net/
相關文章
- 建立python3.9的新環境Python
- php7的新特性PHP
- .NET 7新特性
- 總結PHP 7新增加的特性PHP
- PHP7 新特性PHP
- php7新特性PHP
- Win10 Build 17692釋出 7個新特性詳解Win10UI
- python3.9中字典合併如何操作?Python
- java-jdk7新特性JavaJDK
- ES7 ES8 的新特性(部分)
- [轉載] Java7中增加的新特性Java
- ECMA 2016(ES7)新特性
- Filament 被低估的5個特性
- ES7 ES8 新特性
- ES7-ES9新特性概述
- 深入理解物件導向,物件導向3個特性7個原則6種關係物件
- 軟體測試-各個特性常用特性
- python3.9安裝wordcloud出錯解決辦法PythonCloud
- 溫故而知新,重溫 Java 7 的那些“新”特性Java
- MySQL9的3個新特性MySql
- PHP開發者應該學習、會用10個PHP7新特性PHP
- ES5+ES6+ES7特性整理
- ECMAScript 2016(ES7)新特性簡介
- 在非 laravel 專案中使用 laravel 的特性 7: 路由 routingLaravel路由
- Go 語言的 4 個特性改動Go
- 記Promise一個容易被忽略的特性Promise
- 十個超級實用的 JS 特性JS
- CSS三個非常重要的特性分享!CSS
- HTTP代理伺服器的三個特性HTTP伺服器
- 軟體測試質量的六大特性和27個子特性
- 楊輝三角的5個特性,一個比一個牛皮!
- 帶你瞭解PHP7裡生成器的新特性PHP
- ES2022 中的4個最重要的特性
- 13 個 C# 10 特性C#
- 幾個特性,快速上手KotlinKotlin
- 技術趣味史-Java 各個版本的特性Java
- .NET 9 的幾個新特性,新穎嗎?
- Bootstrap 支援的一個特性—輸入框組boot