我有一个不包含循环的方法。我将一个列表传递给该方法。我根据此代码段为列表分配了一个新值:
def do_paging(pageable_list):
pageable_list = pageable_list[start:end]
在调用代码中:
do_paging(source_list)
但它看起来不像是 source_list 被改变了。如果我从 do_paging() 返回 pageable_list 一切都很好。数组参数是不可变的吗?
我开始返回值,因为它更好。但我很惊讶,想知道这是怎么回事。
编辑 - 我怎么可能已经编写了一年的 Python 而不知道这一点!
请您参考如下方法:
切片正在创建一个新列表:
>>> a = [1,2,3]
>>> b = a[1:2]
>>> a is b
False
您没有改变原始列表:
>>> a
[1, 2, 3]
此外,您永远不会对您在 do_paging 函数中分配名称 pageable_list 的列表做任何事情。
所以问题是 a) 你没有修改原始列表和/或 b) 你没有从你的函数返回任何东西。使代码工作的一种方法是创建切片并将名称 pageable_list 重新分配给函数的返回值,即:
def do_paging(pageable_list, start, end):
return pageable_list[start:end]
pageable_list = do_paging(pageable_list, start, end)
该函数可能还应该采用 start 和 end 参数,在全局空间中寻找它们有点难看。
但是,如果你需要你的函数做的只是切片,这个函数就没什么用了,你可以只使用这条线
pageable_list = pageable_list[start:end]
