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

歡迎訪問 生活随笔!

生活随笔

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

python

Python3.8 新特性:仅位置参数

發布時間:2025/3/20 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3.8 新特性:仅位置参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是Python3.8新特性的第二篇,第一篇介紹了賦值表達式,這篇文章花幾分鐘了解什么是僅位置參數(Positional-Only Arguments)

函數傳遞參數的方式繁多,有位置參數、默認參數、可變參數、關鍵字參數、命名關鍵字參數。舉個例子:
def add(x, y, *args, **kwargs):
print(f"x={x}, y={y}")

這里的 x 和 y 就是兩個位置參數,我們可以這樣調用

>>> add(1, 2) x=1, y=2

因為是位置參數,嚴格遵守位置順序。

不過,你也可以把 x 和 y 當做命名關鍵字參數進行傳遞,參數的順序可改變,例如把 y 放前面,不影響結果

>>> add(y=2, x=1) x=1, y=2

第二種方式看似更靈活,出錯的風險也增加了,特別是多人合作的項目中。

那么如何從語法層面上禁止這樣調用,避免出錯呢?

這里就可以使用Python3.8中的僅位置參數語法了,在函數定義時,參數之間可指定一個斜杠(/),斜杠前的參數嚴格遵守僅位置參數的定義,例如:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> def add(x, y, /, *args, **kwargs): ... print(f"x={x}, y={y}") ... >>> add(1,2) x=1, y=2

“/“ 告訴解釋器,x 和 y 是兩個嚴格的位置參數,不能當做命名關鍵字參數進行傳遞。如果把它當作命名關鍵字參數進行傳遞參數時,會怎么樣呢?

>>> add(y=2, x=1) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: add() missing 2 required positional arguments: 'x' and 'y'

報錯了,系統不允許你使用這種方式調用,僅支持位置參數的方式進行調用,調用時不能指定參數的名字。

其實,這個語法在Python3.7 就有出現過,比如內置函數 float

python3.6可以指定參數名字進行調用

>>> float(x=1) 1.0

python3.7就會報錯

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> float(x=1) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: float() takes no keyword arguments >>> float(1) 1.0

可以看下python3.7 下 float 的幫助文檔

>>> help(float) Help on class float in module builtins:class float(object)| float(x=0, /)|| Convert a string or number to a floating point number, if possible.|| Methods defined here:|| __abs__(self, /)| abs(self)

你會發現float定義中,也有個 “/“,說明 x 是位置參數,調用時,不能指定名字。

總結

僅位置參數的語法就是在函數定義時,位置參數用 “/” 進行分隔,調用時不允許使用命名關鍵字參數進行調用,你明白了嗎?

總結

以上是生活随笔為你收集整理的Python3.8 新特性:仅位置参数的全部內容,希望文章能夠幫你解決所遇到的問題。

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