亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 3.8 或 3.8+ 中函數的一般簽名是什么?

python 3.8 或 3.8+ 中函數的一般簽名是什么?

慕娘9325324 2023-11-09 21:42:54
我一直無法找到一個可以參考的好地方來幫助自己理解 python 3.8 或 + 中的通用函數簽名。我想了解一種通用語法,其中包括僅位置、僅關鍵字、*args、**kwargs 等。我能夠推理一切,但我似乎無法將 *args 放入通用簽名中。def inc(a:int, b:int,/, c:int=10, d:int=5, *, e:int=15,f:int=3, **kwargs) -> int:      return None在這里,無論我將 *args 放在哪里,它都會引發語法錯誤。我可以刪除,*,(僅在該指示符之后的關鍵字),然后 *args 似乎很適合你能幫我理解 *args 如何與函數簽名的僅位置元素和僅關鍵字元素相匹配,以及 python 函數的一般語法應該是什么樣子嗎
查看完整描述

2 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

您不能同時使用 varargs 參數和特殊*參數來指示位置參數后面的僅關鍵字參數。PEP-3102引入了僅關鍵字語法,表示:

第二個語法更改是允許省略 varargs 參數的參數名稱。其含義是允許函數使用僅關鍵字參數,否則不會采用 varargs 參數。

(強調我的)。

您可以擁有**args,但不能同時擁有兩者。特殊參數的要點*是,當您還沒有 varargs 參數時,允許您擁有僅關鍵字參數。


查看完整回答
反對 回復 2023-11-09
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

*不是“僅在此指示符之后的關鍵字”。**參數后面列出的非參數*僅是關鍵字。例如,在以下函數中:

def f(*args, x):
    ...

x僅限關鍵字。

如果您不希望函數采用*args,則可以使用 bare*來標記僅關鍵字參數的開始,但如果您確實想要*args,則僅關鍵字參數將在其后。


查看完整回答
反對 回復 2023-11-09
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號