美好的一天,辉煌的堆叠溢出社区。当输入作为字典时,我注意到关于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我想知道为什么?非常感谢!
PS。请随时修改问题,如果我对问题的表达不够清楚,请道歉!
发布于 2021-12-13 10:11:57
关键的区别是input.append(value)是一个表达式,而input[value] = value不是(它只是一个语句)。return语句只能将表达式作为参数(或不使用任何参数返回任何参数)。
你可以这样做:
def func_dict(value,input={}):
return input.update({ value: value }) or input它的工作原理是dict.update()不返回任何内容,因此我们返回(现在更新的) input。我知道这很难看,但我想不出更好的办法了。
发布于 2021-12-13 10:10:19
另外,在python中,单词input是一个受保护的单词,用于与用户的交互,您可能需要使用另一个参数名,因为您现在使用它的方式覆盖了默认函数。
以下是有关输入的文档:https://docs.python.org/3/library/functions.html#input
https://stackoverflow.com/questions/70332884
复制相似问题