怎樣分析Python3.8中的僅位置參數(shù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
隆林ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
Python3.8新特性的僅位置參數(shù)(Positional-Only Arguments)
函數(shù)傳遞參數(shù)的方式繁多,有位置參數(shù)、默認參數(shù)、可變參數(shù)、關鍵字參數(shù)、命名關鍵字參數(shù)。舉個例子:
def add(x, y, *args, **kwargs):
print(f"x={x}, y={y}")
這里的 x 和 y 就是兩個位置參數(shù),我們可以這樣調用
>>> add(1, 2)
x=1, y=2
因為是位置參數(shù),嚴格遵守位置順序。
不過,你也可以把 x 和 y 當做命名關鍵字參數(shù)進行傳遞,參數(shù)的順序可改變,例如把 y 放前面,不影響結果
>>> add(y=2, x=1)
x=1, y=2
第二種方式看似更靈活,出錯的風險也增加了,特別是多人合作的項目中。
那么如何從語法層面上禁止這樣調用,避免出錯呢?
這里就可以使用Python3.8中的僅位置參數(shù)語法了,在函數(shù)定義時,參數(shù)之間可指定一個斜杠(/),斜杠前的參數(shù)嚴格遵守僅位置參數(shù)的定義,例如:
>>> def add(x, y, /, *args, **kwargs):
... print(f"x={x}, y={y}")
...
>>> add(1,2)
x=1, y=2
“/“ 告訴解釋器,x 和 y 是兩個嚴格的位置參數(shù),不能當做命名關鍵字參數(shù)進行傳遞。如果把它當作命名關鍵字參數(shù)進行傳遞參數(shù)時,會怎么樣呢?
>>> 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'
報錯了,系統(tǒng)不允許你使用這種方式調用,僅支持位置參數(shù)的方式進行調用,調用時不能指定參數(shù)的名字。
其實,這個語法在Python3.7 就有出現(xiàn)過,比如內置函數(shù) float
python3.6可以指定參數(shù)名字進行調用
>>> float(x=1)
1.0
python3.7就會報錯
>>> 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)
你會發(fā)現(xiàn)float定義中,也有個 “/“,說明 x 是位置參數(shù),調用時,不能指定名字。
僅位置參數(shù)的語法就是在函數(shù)定義時,位置參數(shù)用 “/” 進行分隔,調用時不允許使用命名關鍵字參數(shù)進行調用,你明白了嗎?
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
文章題目:怎樣分析Python3.8中的僅位置參數(shù)
網(wǎng)頁URL:http://jinyejixie.com/article6/ghoiig.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、Google、微信公眾號、定制開發(fā)、、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)