您不能使用列表作为默认参数,但可以使用元组吗?



请告诉我,如果有帖子已经在讨论这个问题,我还没有找到关于这个特定主题的具体答案。

您不应该使用列表作为函数参数的默认值,因为它是可变的。在这种情况下,以下哪种代码是最佳实践?

def my_func(arg1 = ("hello", "world")):
pass

def my_func(arg1 = None):
if arg1 is None:
arg1 = ["hello", "world"]

我说的是一种情况,在这种情况下,元组和列表可以在函数中以相同的方式使用。

谢谢!

取决于是否要更改:

对于元组:

def my_func(arg1 = ("hello", "world")):
arg1[0] = "other val"

您将得到->TypeError: 'tuple' object does not support item assignment

如前所述,列表是可变的:

def my_func(arg1 = None):
if arg1 is None:
arg1 = ["hello", "world"]
arg1[0] = "other val"

arg1['other val', 'world']

最新更新