def get_thing(item, obj):
for i in range(item):
obj.append(i)
return obj
def main():
thing = []
get_thing(5, thing)
print(thing)
main()
我希望返回以下代码
[]
而不是
[0,1,2,3,4]
它的工作方式似乎与我这样做的方式相同。
thing = get_thing(5, thing)
导致这种回报的后台进程是什么?我在工作中的代码中多次注意到这一点,并对此感到有些困惑,不太确定这是如何工作的。
答案 0 :(得分:0)
长话短说,是因为您将可变对象作为参数传递给函数调用。
这样做: 注意这仅作为演示目的
def get_thing(num, lst):
if not lst:
lst = []
for n in range(num):
lst.append(n)
print(lst) # [0, 1, 2, 3, 4]
return lst
def main():
thing = None
get_thing(5, thing)
print(thing) # None
main()
您可以看到它按您的预期工作。