【发布时间】:2016-11-08 23:43:32
【问题描述】:
在函数中将列表作为参数传递时,为什么下面的列表没有改变?
def foo(*x):
y=sorted(x)
print(y)
a=[3,2,1]
函数返回[[3, 2, 1]],而不是[[1,2,3]]。为什么会这样?这与按值调用有关吗?
【问题讨论】:
-
您是如何准确调用该函数的?您是否期望通过简单地调用
foo来改变a?此外,还有一个问题,您认为函数定义中的星号对于 Python 意味着什么? -
def foo(*x):你认为星号对x做了什么? -
你的函数没有返回
[[3, 2, 1]]。它正在打印[[3, 2, 1]]并返回None。您正在对单个元素元组进行排序,该元组恰好包含一个 3 元素列表;该内部列表不受影响。 -
您真正希望
foo返回什么?你想要[1, 2, 3]还是[[1, 2, 3]]?