gpt4 book ai didi

python-3.x - 为什么这个 python 函数返回 len=7 而不是 len=6?

转载 作者:行者123 更新时间:2023-12-01 03:03:44 27 4
gpt4 key购买 nike

我在下面得到了这段代码,但即使调试它,我也不明白为什么给出 7 而不是 6。

更准确地说,当我调试每个返回时都会给我预期的结果:

  1. 第一个函数调用:ipdb> --Return-- ['a']
  2. 第二个函数调用:ipdb> --Return-- ['a', 'a']
  3. 第三个函数调用:ipdb> --Return-- ['a', 'a', 'a']

但最后 func() + func() + func() 变成了 ['a', 'a', 'a', 'a', 'a', 'a', 'a']

为什么还有一个'a'???

#!/usr/bin/python
# -*- coding: utf-8 -*-

def func(par=[]):
par.append("a")
return par

print(len(func() + func() + func()))

最佳答案

当执行func() + func() + func()时,Python必须将临时对象存储在栈上才能将它们相加,这意味着你的代码等同于

a = func() # returns ['a']
b = func() # returns ['a', 'a'], but variable 'a' now holds ['a', 'a'] as well!
tmp = a + b
c = func() # return ['a', 'a', 'a']
d = tmp + c
return d

由于可变默认参数,在实际添加a+b之前,ab都等于[' a', 'a'],给你 ['a', 'a', 'a', 'a'],4 个元素,然后你添加 [' a','a','a'] 您从第 3 个 func() 调用中得到,结果得到 7 个元素。

关于python-3.x - 为什么这个 python 函数返回 len=7 而不是 len=6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com