为什么执行函数后这个列表没有“保存”?

-2 投票
2 回答
1054 浏览
提问于 2025-04-28 04:29

我才学了几周的编程,今天我在用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)

撰写回答