python筆記之強制函數以關鍵字參數傳參


 

 

 

 

 

最近學習python,學到了函數傳參,看到了以下這個特殊情況,特此來做個筆記

def add(*, x, y):

    print(x, y)

以上函數定義后,該怎么傳參?前面的那個*號是做什么用的?

我們可不可以照以下方式 傳參?

add(5, 6, 7),這樣傳參可不可以?會不會有錯?

我們來看結果

提示參數過多,看來這樣傳參不對

 

看來這樣也不行

這樣也不可以,那怎么傳才對呢?按道理上面的傳法應該是正確的為什么還報錯?

這次終於對了,為什么呢,因為定義函數參數時候,如果定義了位置參數,並且在最前面加了*號,那么位置參數就必須以關鍵字的方式傳參了,否則就會報錯了。

來看下變種

def add(x, *, y, z):

    print(x, y, z)

以上參數該怎么傳?

add(5)可以嗎?

提示缺少2個參數, y z並且要求是關鍵字參數,那么第一個參數是正確的,只是缺少參數

這次可以了,由此可見,*號后面的參數必須以關鍵字傳參,*號前面是正常的位置參數,那么我們想下*args前后是不是也是這個道理呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM