为什么以下代码给出“无”?我该如何解决这个问题?
def f1(list1):
f2(list1.append(2))
def f2(list1):
print(list1)
f1([1])
什么也行不通:
def f1(list1):
arg1 = list1.append(2)
f2(arg1)
答案 0 :(得分:7)
通常,改变对象的Python方法(例如list.append
,list.extend
或list.sort
)会返回None
。
如果您想打印新列表:
def f1(list1):
list1.append(2)
f2(list1)
答案 1 :(得分:6)
这取决于你想做什么。如果您希望在调用list1
后更改f1
,请使用
def f1(list1):
list1.append(2)
f2(list1)
看看会发生什么:
>>> l = [1]
>>> f1(l) # Modifies l in-place!
[1, 2]
>>> l
[1, 2]
如果您不希望更改list1
:
def f1(list1):
f2(list1 + [2])
现在看到这个:
>>> l = [1]
>>> f1(l) # Leaves l alone!
[1, 2]
>>> l
[1]