日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 3.9特性,开发者应该知道的Python 3.9新特性

發布時間:2023/12/10 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 3.9特性,开发者应该知道的Python 3.9新特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:Python 3.9來了,有哪些新特性值得學,值得用?

Python 2.9(5.10.2020)已經發布了一段時間,最后一個Alpha版(3.9.0a5)近期發布了測試版。開發者應該看新版有哪些新功能,改進和修復。

安裝測試版

本節嘗鮮安裝Python 3.9,但不要破壞穩定版本的Python解釋。命令如下:

wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgztar xzvf Python-3.9.0a5.tgzcd Python-3.9.0a5./configure --prefix=$HOME/python-3.9.0a5makemake install$HOME/python-3.9.0a5/bin/python3.9

運行以上指令后,我們會收到IDLE和歡迎消息。類似于如下:

Python 3.9.0a5 (default, Apr 16 2020, 18:57:58)[GCC 9.2.1 20191008] on linuxType "help", "copyright", "credits" or "license" for more information.

新的字典運算符

最明顯的新特性大概是新的字典合并運算符 _ 或 .

從現在開始,你有3個選項來合并字典:| |=

來看如下代碼:

# Dictionaries to be merged:d1 = {"x": 1, "y": 4, "z": 10}d2 = {"a": 7, "b": 9, "x": 5}# Expected output after merging{'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}# ^^^^^ Notice that "x" got overridden by value from second dictionary# 1. Optiond = dict(d1, **d2)# 2. Optiond = d1.copy() ?# Copy the first dictionaryd.update(d2) ? # Update it "in-place" with second one# 3. Optiond = {**d1, **d2}

上面第一個選項函數使用初始化字典,第一個參數是普通字典,第二個是Key/Value對的列表。在此種情況下,只是使用運算符解壓縮到另一個字典。

dict(iterable, **kwargs)**

第二種方法是使用第二個字典來更新第一個字典。因為此字典在原位上修改,我們需要將第一個副本復制到變量中,以避免修改原始變量。

第三種方法也是最后一個。在我看來,最干凈的解決方案就是使用字典解包和解壓縮兩個變量到一個結果。

d1 d2 d

是的,即便以上選項是完全等價的,我們現在使用新的運算符提供新的解決方案。

|

# Normal mergingd = d1 | d2# d = {'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}# In-place mergingd1 |= d2# d1 = {'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}

可以看到,此段代碼的第一個示例與前面的運算符解包(d = {**d1, **d2})很相似。第二個示例可用于立即合并,其中原始變量d1被第二個操作數d2的值立即更新。

IPv6范圍地址

Python 3.9中引入的另一個更改是可以指定IPv6地址的范圍。如果您不熟悉IPv6范圍,它們將用于指定相應IP地址在Internet的哪個部分有效。范圍可以在IP地址的末尾使用%符號指定-例如:3FFE:0:0:1:200:F8FF:FE75:50DF%2-因此此IP地址在范圍內2,即鏈接本地地址。

因此,如果您需要在Python中處理IPv6地址,現在可以這樣處理:

from ipaddress import IPv6Addressaddr = IPv6Address('ff02::fa51%1')print(addr.scope_id)# "1" - interface-local IP address

但是,使用IPv6范圍時應注意一件事。使用基本的Python運算符進行比較時,范圍不同的兩個地址不是相等的。

新的math模塊

同時,在math模塊中,添加或改進了許多其他功能。從對一個現有功能的改進開始:

import math# Greatest common divisormath.gcd(80, 64, 152)# 8

以前gcd計算最大公約數的函數只能應用于2個數字,程序員在處理更多數字時必須執行類似的操作,如math.gcd(80, math.gcd(64, 152))。從Python 3.9開始,可以將其應用于任意數量的值。

math模塊的 第一個新增加的math.lcm功能,如下代碼:

# Least common multiplemath.lcm(4, 8, 5)# 40余下的2個新函數緊密相關,那就是math.nextafter和math.ulp:# Next float after 4 going towards 5math.nextafter(4, 5)4.000000000000001# Next float after 9 going towards 0math.nextafter(9, 0)8.999999999999998# Unit in the Last Placemath.ulp(1000000000000000)0.125math.ulp(3.14159265)4.440892098500626e-16

math.nextafter(x, y)功能是非常簡單-如果x是浮點數,則y也會同時考慮到浮點數精度。

新的字符串函數

字符串添加了兩個新的便捷功能:

# Remove prefix"someText".removeprefix("some")# "Text"# Remove suffix"someText".removesuffix("Text")# "some"

當然你仍然可以使用string[len(prefix):]前綴和string[:-len(suffix)]后綴來實現該功能。但如果經常執行該操作,新的函數就該派上用場了。

小獎勵

最后送大家一個Python 3.9甜點。實際上,它已經將HTTP狀態碼添加到了http.HTTPStatus上了。如下代碼:

import httphttp.HTTPStatus.EARLY_HINTS# http.HTTPStatus.TOO_EARLY# http.HTTPStatus.IM_A_TEAPOT#

沒事的時候可以來看看這些狀態碼,我覺得可能你也不知道啥時候能用上它們。也許在生產服務器返回像 http.HTTPStatus.IM_A_TEAPOT 的狀態時,可能會提高程序員的生活質量。

小結

這里只是一部分Python 3.9的更新內容,也并非所有更新與你的日常編程有關,但一部分相信會幫助你提高效率。

Python 3.9目前還處于Alpha階段,穩定版本大概在10月份正式推出,這段時間還會有一些更改。

總結

以上是生活随笔為你收集整理的python 3.9特性,开发者应该知道的Python 3.9新特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。