你好,燦爛的棧溢社區。當作為字典輸入時,我注意到一個關于Python函數的有趣行為。
當我們使用空列表作為默認參數時,可以在附加一些值的同時返回該列表。
def func_list(value,input=[]):
return input.append(value)
當使用空字典作為參數時,我希望應用相同的方法。例如:
def func_dict(value,input={}):
return input[value] = value
但是,Python將引發語法錯誤,我只能執行以下操作:
def func_dict(value,input={}):
input[value] = value
return input
我想知道為什么?非常感謝你!
請隨意修改問題,如果我對問題的表達不夠清楚,請道歉!
關鍵的區別在于
input.append(value)
是一個表達式,input[value] = value
不是(它只是一個語句)。return
語句只能將表達式作為參數(或者沒有參數返回None)。您可以這樣做:
其工作原理是
dict.update()
返回None,因此我們返回(現在更新的)input
。我知道這很難看,但想不出更好的了。