python3 8中新增的三個特性

2021-10-03 08:36:04 字數 2063 閱讀 3904

由於之前學習以及專案中一直用的是python3.6.5,最近幾天在學習之餘看了一下python3.8的官方文件,了解了一下python3.8.x中新增的特性。以此來記錄一下。

1.海象運算子

python3.8.x中新增了海象運算子:=,可以在區域性**塊中的表示式給變數賦值,並且該變數可以用於該**塊中。該用法可以用於簡化if語句以及列表推導等,下面是官方中給出的例子:(據說是因為通過了這個python特性而使得龜叔決定退出python管理層。。。)

# s = "python 3.8.3 test"

# 在if語句中使用

# if (n := len(s)) > 10:

# print(f"the length of s is too long!") # 避免了使用兩次len

## if (match := re.search(r"\d+", s)):

# print(match.group()) # 結合正規表示式進行使用,要是以前版本可能需要這樣寫:

## match = re.search(r"\d+", s)

# if match:

# print(match.group())##

# def random_string(s1, s2):

# return s1 + s2##

# 在列表推導中使用

# print([random_str.upper() for item in s if (random_str := random_string("t", item)) in s])

#

使用海象運算子可以在if語句的判斷語句中定義變數,同時該變數可以在**塊中使用。或者是在列表推導中可以使用更複雜的函式來進行相關的判斷。

2.f字串的增強

# 自從python引入f-string以後,格式化字串更方便,在python3.8.x中格式符串中形式為

# f'' 的 f-字串將擴充套件表示為表示式文字,加乙個等於號,再加表示式的求值結果,可以更方便的用於除錯和sql語句等

# now = format(datetime.now(),"%y-%m-%d %h:%m:%s")

# print(f"") # >>> now='2020-02-29 13:52:37'

# print(f"now=") # >>> now=2020-02-29 13:53:50之前版本的寫法和輸出結果,所有如果是sql語句中之前的版本必須寫成:

# print(f"now=''") # >>> now='2020-02-29 13:54:46'

3.僅限位置引數

# """僅限位置引數"""

# python 3.8.x中在函式引數的關鍵字中增加了僅限位置引數/.##

# def func(a, b, /, c, d, *, e, f): # 此時a, b為僅限位置引數,不能以key=word的形式傳入,c,d則為關鍵字引數或者位置引數,e,f則為關鍵字引數

# print(a, b, c, d, e, f)##

# func(10, 20, 30, d=40, e=50, f=60) # >>> 10 20 30 40 50 60

# func(a=10, b=20, 30, d=40, e=50, f=60) 錯誤的呼叫方式

# 引入僅限位置引數的好處在於可以更方便的重構函式,由於此時必須以位置引數的形式傳入而不能以func(a=10, b=20, 30, d=40, e=50, f=60)的形式

# 呼叫,所以此時如果重構func的函式引數a,b等,外面呼叫的**不需要改變.##

# def func_kwargs(a, b, /, **kwargs):

# print(a, b, kwargs)##

# func_kwargs(10, 20, a=30, b=40) # >>> 10 20 ,由於/左側的形參不會被公開為關鍵字引數

# 所以在函式引數傳遞的時候仍然可用

List Map Set三個介面,訪問元素的特點

首先,list 與set 具有相似性,它們都是單列元素的集合,所以,它們有乙個功共同的父介面,叫 collection set 裡面不允許有重複的元素,所謂重複,即不能有兩個相等 注意,不是僅僅是相同 的物件 即假設 set集合中有了乙個 a物件,現在我要向 set集合再存入乙個 b物件,但 b物件...

Python變數的三個特徵

對於每個變數,python都提供了這三個方法分別獲取變數的三個特徵,其中python的內建功能id 記憶體位址不一樣,則id 後列印的結果不一樣,因為每乙個變數值都有其記憶體位址,而id是用來反映變數值在記憶體中的位置,記憶體位址不同則id不同。x 10 print x 獲取變數的變數值 print...

python的三個高階函式

自己寫的筆記哈 1 map 指把乙個可呼叫物件func依次對映到序列的每個元素上,並返回乙個可迭代的map物件,但是map物件中的每個元素只能使用乙個。可呼叫物件func可以是系統自帶函式,使用者自定義函式,lambda。data map str,range 5 data2 map lambda x...