我有以下设置:
def returnList(arg=["abc"]):
return arg
list1 = returnList()
list2 = returnList()
list2.append("def")
print("list1: " + " ".join(list1) + "\n" + "list2: " + " ".join(list2) + "\n")
print(id(list1))
print(id(list2))
输出:
list1: abc def
list2: abc def
140218365917160
140218365917160
我可以看到 arg=["abc"] 返回相同默认列表的副本,而不是每次都创建一个新列表。
我试过做
def returnList(arg=["abc"][:]):
和
def returnList(arg=list(["abc"])):
是否可以获得一个新列表,或者每次我想要某种默认值时都必须在方法内复制列表?