Python list.append作为参数

时间:2011-11-06 11:24:37

标签: python list python-3.x

为什么以下代码给出“无”?我该如何解决这个问题?

def f1(list1):
    f2(list1.append(2))

def f2(list1):
    print(list1)

f1([1])

什么也行不通:

def f1(list1):
    arg1 = list1.append(2) 
    f2(arg1)

2 个答案:

答案 0 :(得分:7)

通常,改变对象的Python方法(例如list.appendlist.extendlist.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]