簡體   English   中英

具有非關鍵字參數和關鍵字參數的函數

[英]A function with non keyword arguments and keyword arguments

如果我聲明一個非關鍵字參數的函數,如元組和關鍵字參數,如字典,它們是否被聲明?

例如:

def someFunc(a, *nkw, **kwa):
    nkwList = []
    kwList  = []
    for i in nkw:
        nkwList.append(i)
    for j in kwa:
        kwList.append(j)
    print a, nkwList, kwList

輸入:

someFunc(1)

輸出:

1 [] []

正如你所看到的,即使我沒有傳遞一個元組和一個字典,當我循環通過nkw和kwa時,我沒有得到Index超出范圍的錯誤。 根據我的理解,我認為* nkw和** kwa是在函數聲明中創建的。

任何人都可以幫我理解這個概念嗎?

始終創建元組和字典,即使它們是空的(即它們中沒有傳遞任何內容)。

nkwkwa當然是作為emty list / dict傳遞的。 做其他事情會完全違背他們的目的,因為你永遠無法安全地訪問它們,你不必總是檢查它們是否存在。

你可能會把它與默認參數混淆。 例如:

def someFunc(x=[]):
    pass

這里用作x默認列表是在函數聲明時實例化的,因此在函數的所有調用中都是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM