国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python3.8,3.9,3.10,3.11特性比較

這篇具有很好參考價(jià)值的文章主要介紹了python3.8,3.9,3.10,3.11特性比較。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近計(jì)劃將python2遷移到python3,由于本人學(xué)習(xí)時(shí)用的3.7版本,所以僅作大于3.7版本的比較。

3.8

文檔地址:python3.8

新增賦值表達(dá)式:=(海象運(yùn)算符)

作用:避免重復(fù)調(diào)用,使代碼更加簡潔。PS:別當(dāng)GO寫,它不支持聲明并賦值變量

import re

# 3.8
if match := re.search(r"python", "I love python! \r\n And python love me! \r\n", re.I | re.M | re.DOTALL):
    print(match.group())

# 3.7
match = re.search(r"python", "I love python! \r\n And python love me! \r\n", re.I | re.M | re.DOTALL)
if match:
    print(match.group())

僅限位置形參

作用:

  1. 新增了一個(gè)函數(shù)形參語法 / 用來指明某些函數(shù)形參必須使用僅限位置而非關(guān)鍵字參數(shù)的形式。
  2. /區(qū)分了前后用什么傳參方式
# *號代表e,f必須用鍵值
# /號代表a,b必須用位置
def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

# 合法調(diào)用
f(10, 20, 30, d=40, e=50, f=60)
# 不合法調(diào)用
f(10, b=20, c=30, d=40, e=50, f=60)   # b不能是關(guān)鍵詞參數(shù)
f(10, 20, 30, 40, 50, f=60)           # e必須是關(guān)鍵字參數(shù)

3.7的老人感覺:這兩個(gè)符號加上會(huì)降低代碼可讀性

f-字符串支持 = 用于自動(dòng)記錄表達(dá)式和調(diào)試文檔

作用:f’{expr=}’ 的 f-字符串將擴(kuò)展表示為表達(dá)式文本

author = "Generalzy"

print(f'{author=}')
# author='Generalzy'

dict 和 dictview 可以使用 reversed() 按插入順序反向迭代

作用:python3.7開始后,python的dict就有序了,現(xiàn)在支持反轉(zhuǎn)字典順序

dic = {"name": "generalzy", "gender": 1, "age": "2000"}
for key, val in dic.items():
    print(key, val)
# name generalzy
# gender 1
# age 2000

print(reversed(dic))
# <dict_reversekeyiterator object at 0x00000257213E71D0>

for key in reversed(dic):
    print(key)
# age
# gender
# name

asyncio.run()更加穩(wěn)定

作用:asyncio.run() 已經(jīng)從暫定狀態(tài)晉級為穩(wěn)定 API。 此函數(shù)可被用于執(zhí)行一個(gè) coroutine 并返回結(jié)果,同時(shí)自動(dòng)管理事件循環(huán)

import asyncio

async def main():
    await asyncio.sleep(0)
    return 42

asyncio.run(main())

因此 asyncio.run() 應(yīng)該作為運(yùn)行 asyncio 程序的首選方式。

csv.DictReader返回值改變

作用:csv.DictReader 現(xiàn)在將返回 dict 而不是 collections.OrderedDict,此工具現(xiàn)在會(huì)更快速且消耗更少內(nèi)存同時(shí)仍然保留字段順序。

multiprocessing增加進(jìn)程間共享內(nèi)存的方法

作用:添加了新的 multiprocessing.shared_memory 模塊。

3.9

文檔:python3.9

字典合并 (|)與更新運(yùn)算符(|=)

作用:它們?yōu)楝F(xiàn)有的 dict.update 和 {**d1, **d2} 字典合并方法提供了補(bǔ)充。

>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}

增加了 str.removeprefix(prefix) 和 str.removesuffix(suffix) 用于方便地從字符串移除不需要的前綴或后綴。

作用:用于方便地從字符串移除不需要的前綴或后綴。

標(biāo)準(zhǔn)多項(xiàng)集中的類型標(biāo)注泛型

作用:

  1. 可以使用內(nèi)置多項(xiàng)集類型例如 list 和 dict 作為通用類型而不必從 typing 導(dǎo)入對應(yīng)的大寫形式類型名 (例如 List 和 Dict)。
  2. 標(biāo)注類型更加方便了。
def greet_all(names: list[str]) -> None:
    for name in names:
        print("Hello", name)

新的解析器

Python 3.9 使用于基于 PEG 的新解析器替代 LL(1)。 新解析器的性能與舊解析器大致相當(dāng),但 PEG 在設(shè)計(jì)新語言特性時(shí)的形式化比 LL(1) 更靈活。

file 屬性將是一個(gè)絕對路徑,而不是相對路徑。

作用:__file__在任何情況下都將是一個(gè)絕對路徑

新增時(shí)區(qū)zoneinfo模塊

zoneinfo 模塊為標(biāo)準(zhǔn)庫引入了 IANA 時(shí)區(qū)數(shù)據(jù)庫。 它添加了 zoneinfo.ZoneInfo,這是一個(gè)基于系統(tǒng)時(shí)區(qū)數(shù)據(jù)的實(shí)體 datetime.tzinfo 實(shí)現(xiàn)。

>>> from zoneinfo import ZoneInfo
>>> from datetime import datetime, timedelta

>>> # Daylight saving time
>>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
>>> print(dt)
2020-10-31 12:00:00-07:00
>>> dt.tzname()
'PDT'

>>> # Standard time
>>> dt += timedelta(days=7)
>>> print(dt)
2020-11-07 12:00:00-08:00
>>> print(dt.tzname())
PST

random新增方法生成隨機(jī)字節(jié)串

增加了新的 random.Random.randbytes 方法:生成隨機(jī)字節(jié)串。

3.10

文檔:python3.10

帶圓括號的上下文管理器

作用:允許將過長的上下文管理器集能夠以與之前 import 語句類似的方式格式化為多行的形式。

with (
    CtxManager1() as example1,
    CtxManager2() as example2,
    CtxManager3() as example3,
):
    ...

更清楚的錯(cuò)誤消息

結(jié)構(gòu)化模式匹配match…case…語句

作用:類似其他語言的:switch…case…

def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 404:
            return "Not found"
        case 418:
            return "I'm a teapot"
        case 419 | 420 | 421:
        	return "我加的"
        case _:
            return "Something's wrong with the internet"

# 模式和類
class Point:
    x: int
    y: int

def location(point):
    match point:
        case Point(x=0, y=0):
            print("Origin is the point's location.")
        case Point(x=0, y=y):
            print(f"Y={y} and the point is on the y-axis.")
        case Point(x=x, y=0):
            print(f"X={x} and the point is on the x-axis.")
        case Point():
            print("The point is located somewhere else on the plane.")
        case _:
            print("Not a point")
            
# 嵌套模式:模式可以任意地嵌套。
match points:
    case []:
        print("No points in the list.")
    case [Point(0, 0)]:
        print("The origin is the only point in the list.")
    case [Point(x, y)]:
        print(f"A single point {x}, {y} is in the list.")
    case [Point(0, y1), Point(0, y2)]:
        print(f"Two points on the Y axis at {y1}, {y2} are in the list.")
    case _:
        print("Something else is found in the list.")

# 約束項(xiàng):可以向一個(gè)模式添加 if 子句,稱為“約束項(xiàng)”。 如果約束項(xiàng)為假值,則 match 將繼續(xù)嘗試下一個(gè) case 語句塊。 
match point:
    case Point(x, y) if x == y:
        print(f"The point is located on the diagonal Y=X at {x}.")
    case Point(x, y):
        print(f"Point is not on the diagonal.")

類比一下GO的:

type P struct {
	x,y int
}
func main() {
	// invalid case []int{...} in switch (can only compare slice a to nil)
	//a:=[]int{1,2}
	//switch nil{
	//case []int{1,2}:
	//	fmt.Println(a)
	//}
	
	p:=P{1,2}
	switch p {
	case P{1,2}:
		fmt.Println(p)
		// {1 2}
	}
}

新的類型聯(lián)合運(yùn)算符X | Y

作用:簡潔標(biāo)注

def square(number: int | float) -> int | float:
    return number ** 2

int 類型新增了一個(gè)方法 int.bit_count()

作用:返回給定整數(shù)的二進(jìn)制展開中值為一的位數(shù),或稱“比特計(jì)量”。

現(xiàn)在 dict.keys(), dict.values() 和 dict.items() 所返回的視圖都有一個(gè) mapping 屬性

作用:給出包裝了原始字典的 types.MappingProxyType 對象。

zip() 函數(shù)有一個(gè)可選的 strict 旗標(biāo)

作用:要求所有可迭代對象的長度都相等,否則異常

3.11

文檔:python3.11

比上一個(gè)版本快60%

Self type

作用:標(biāo)注增加self類型文章來源地址http://www.zghlxwxcb.cn/news/detail-447683.html

class MyLock:
    def __enter__(self) -> Self:
        self.lock()
        return self

class MyLock:
    def __enter__(self) -> Self:
        self.lock()
        return self

    ...

class MyInt:
    @classmethod
    def fromhex(cls, s: str) -> Self:
        return cls(int(s, 16))

    ...

編譯器現(xiàn)在將優(yōu)化只包含格式代碼 %s, %r 和 %a 的字符串字面值中的簡單 printf 風(fēng)格 % 格式化 并使其速度與對應(yīng)的 f-string 表達(dá)式一樣快。

到了這里,關(guān)于python3.8,3.9,3.10,3.11特性比較的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在 CentOS 7 / RHEL 7 上安裝 Python 3.11

    原文鏈接:https://computingforgeeks.com/install-python-3-on-centos-rhel-7/ Python 是一種高級解釋性編程語言,已被用于各種應(yīng)用程序開發(fā),并在近年來獲得了巨大的流行。Python 可用于編寫廣泛的應(yīng)用程序,包括 Web 開發(fā)、數(shù)據(jù)分析、科學(xué)計(jì)算、人工智能、游戲等。由于其簡單易用,它是初

    2024年02月11日
    瀏覽(26)
  • python下載安裝教程(Python 3.10版本)

    python下載安裝教程(Python 3.10版本)

    今天換了新的電腦,需要重新安裝python和PyCharm,就簡單的寫個(gè)教程吧~ 1、進(jìn)入Python官網(wǎng) 官網(wǎng)地址:https://www.python.org 2、點(diǎn)擊【Downloads】展開后點(diǎn)擊【W(wǎng)indows】跳轉(zhuǎn)到下載python版本頁面,選擇\\\"Stable Releases\\\"穩(wěn)定版本,我下載的是Python 3.10.10版本,所以找到【Python 3.10.10-Feb.8,2023】

    2024年02月10日
    瀏覽(21)
  • GPU深度學(xué)習(xí)環(huán)境搭建:Win10+CUDA 11.7+Pytorch1.13.1+Anaconda3+python3.10.9

    GPU深度學(xué)習(xí)環(huán)境搭建:Win10+CUDA 11.7+Pytorch1.13.1+Anaconda3+python3.10.9

    在命令行中輸入【nvidia-smi】可以當(dāng)前顯卡驅(qū)動(dòng)版本和cuda版本。 根據(jù)顯示,顯卡驅(qū)動(dòng)版本為:Driver Version: 516.59,CUDA 的版本為:CUDA ?Version 11.7。 此處我們可以根據(jù)下面的表1 顯卡驅(qū)動(dòng)和cuda版本對應(yīng)關(guān)系得知,Driver Version: 527.47 ?516.31,所以可以使用 CUDA Version 11.7 CUDA工具版本

    2024年04月26日
    瀏覽(106)
  • pytorch的安裝(CUDA10.2+cuDNN8.3.3+torch1.10+?torchvision?0.11.1+python3.9)

    pytorch的安裝(CUDA10.2+cuDNN8.3.3+torch1.10+?torchvision?0.11.1+python3.9)

    (已存網(wǎng)盤和硬盤,文件夾含三個(gè)文件) 本文基本邏輯是: 一、先根據(jù)電腦硬件的條件獲取本身CUDA版本,據(jù)此以及表格比較得出cuDNN、torch、torchvision、python版本。 二、在 NVIDIA 官網(wǎng)下載CUDA和cuDNN,獲取torch的下載鏈接,網(wǎng)頁提供python3.9的下載鏈接 三、安裝CUDA后,把cuDNN這個(gè)

    2024年01月17日
    瀏覽(24)
  • Python 3.11 版本是對線程安全做了什么更改嗎

    問題:這份代碼在 3.11.3 中它居然輸出 0 ,一度以為自己寫錯(cuò)了,抱著不信邪的態(tài)度,又搞了個(gè) Python 3.9.7 的環(huán)境試了下,果然還是符合自己預(yù)期,輸出不為 0,想問下 3.11 版本中是做了什么修改嗎? 答案: 首先在 Python 字節(jié)碼執(zhí)行的時(shí)候 ,GIL 并不是隨時(shí)能在任意位置中斷切

    2024年02月09日
    瀏覽(17)
  • 安裝python 3.11以及安裝pip過程-是安裝embedded純凈版的python

    為了純凈,我在Win10上選擇安裝了embedded的版本的python 3.11,結(jié)果為了安裝pip倒騰了一早上。現(xiàn)記錄如下。 一、安 裝python 3.11 從python官網(wǎng)下的,今天的版本是3.11.1,鏈接:https://www.python.org/ftp/python/3.11.1/python-3.11.1-embed-amd64.zip,下好之后,解壓到一個(gè)文件夾就行,我的本地文件

    2024年02月17日
    瀏覽(22)
  • Win11環(huán)境Mecab日語分詞和詞性分析以及動(dòng)態(tài)庫DLL not found問題(Python3.10)

    Win11環(huán)境Mecab日語分詞和詞性分析以及動(dòng)態(tài)庫DLL not found問題(Python3.10)

    日語因?yàn)榇嬖诩倜?,?huì)導(dǎo)致翻譯軟件進(jìn)行翻譯時(shí)機(jī)翻味道過重的問題,比如積ん読(つんどく)這個(gè)詞,大多數(shù)軟件會(huì)翻譯成:堆積的讀,但其實(shí)是明明買了書卻不讀,光放著的意思。有時(shí)候也需要單獨(dú)查句子中的單詞釋義來理解句子的意思,但一看下去全是假名,無法像中

    2024年02月03日
    瀏覽(20)
  • 構(gòu)建Docker基礎(chǔ)鏡像(ubuntu20.04+python3.9.10+pytorch-gpu-cuda11.8)

    構(gòu)建Docker基礎(chǔ)鏡像(ubuntu20.04+python3.9.10+pytorch-gpu-cuda11.8)

    內(nèi)容如下 訪問官網(wǎng)下載頁 https://www.python.org/downloads/release/python-3910/ 下拉選擇 Gzipped 包 ps:創(chuàng)建鏡像名為 ub2004py3910pytorchgpucuda118 標(biāo)簽為 latest 的鏡像,從當(dāng)前路徑下的 DockerFile 文件打包

    2024年02月05日
    瀏覽(113)
  • Python及Pycharm專業(yè)版下載安裝教程(Python 3.11版)附JetBrains學(xué)生認(rèn)證教程

    Python及Pycharm專業(yè)版下載安裝教程(Python 3.11版)附JetBrains學(xué)生認(rèn)證教程

    本篇主要介紹Python和PyCharm專業(yè)版的下載及安裝方式,以及通過兩種方式進(jìn)行JetBrains學(xué)生認(rèn)證。 1.1、進(jìn)入python官網(wǎng):https://www.python.org 點(diǎn)擊【Downloads】然后選擇需要下載的平臺(tái),這里以【W(wǎng)indows】為例。 1.2、在該頁面選擇要下載的版本。這里選擇的是64位穩(wěn)定發(fā)布3.11.8版本。具

    2024年04月11日
    瀏覽(26)
  • pycharm unsupported Python 3.1報(bào)錯(cuò):pycharm無法識別python 3.10

    pycharm unsupported Python 3.1報(bào)錯(cuò):pycharm無法識別python 3.10

    本人電腦中的pycharm版本是2019的,在使用python3.10環(huán)境的時(shí)候,pycharm無法識別,出現(xiàn)如下錯(cuò)誤: 網(wǎng)上說是因?yàn)閜ython版本過高,無法兼容低版本的pycharm,解決方案分兩種:要么降低python環(huán)境的版本,取消使用3.10,改用3.7或者3.8之類的版本;要么就是下載高版本的pycharm。這里我

    2024年02月13日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包