【问题标题】:Perplexed on this return Python对此返回Python感到困惑
【发布时间】:2021-04-06 08:37:06
【问题描述】:
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)

导致这种返回的后台进程是什么?我在工作中的代码中多次注意到这一点,对此有点困惑,不太确定它是如何工作的。

【问题讨论】:

标签: python return


【解决方案1】:

长话短说,是因为您将可变对象作为参数传递给函数调用。

这样做: 注意,这仅作为演示目的

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()

您可以看到它按您的预期工作。

堆栈溢出相关

文档

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2013-08-20
    • 2023-03-17
    • 2019-04-02
    相关资源
    最近更新 更多