为什么执行函数后这个列表没有“保存”?
我才学了几周的编程,今天我在用Python写一个算法,目的是填充一个空列表。我写了这个:
def wth (a,b):
list=[]
i = 0
j = b
while len(list)<a:
list.insert(i,j)
i=i+1
j=j+1
return list
这个代码是可以工作的,比如说:
wth(10,10)
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
但是,如果我想保留这个列表然后对它做点什么,它又变回了一个空列表:
print list
[]
这是为什么呢?非常感谢!
2 个回答
2
在你的例子中,“list”是一个在函数内部使用的变量。当这个函数结束时,“list”指向的对象会被返回给调用它的地方,但“list”这个变量本身会和函数内部的其他变量一起消失。
实际上,“list”是一个内置名称,所以当你之后尝试打印它时,你应该会看到"<type 'list'>"
。根据你的例子,我猜测你在某个地方创建了一个叫“list”的全局变量。
通常来说,使用内置类型或函数作为变量名(比如list、dict、map等)是不明智的,因为这样会遮盖掉你可能想要后续使用的对象,而且会让大家感到困惑。
3
如果你想使用一个函数的结果,你需要把它赋值给一个变量,像这样
new_list = wth(a, b)
print new_list
其实你可以用更简单的方法,只需要使用 range
函数就能达到你想要的效果,像这样
def wth(a, b):
return range(b, b + a)