gpt4 book ai didi

python - 为什么当多次调用 Python 3 函数时,该函数的默认值会被覆盖?

转载 作者:行者123 更新时间:2023-12-01 05:06:15 25 4
gpt4 key购买 nike

有人可以解释一下为什么当我多次调用这个函数时,L 默认情况下永远不会设置为空吗?但是,任何后续调用的结果都会 append 到之前调用的所有结果中吗?

该函数将数据分成 7 天的 block ,从最后一个日期 ([::-1]) 开始,计算每 7 天的平均值并将结果作为值 append 到一个列表。忽略不完整的 block

数据的默认值是序数格式的日期列表。

def separate(data = [i for i in w][::-1],L = []):
print("separate has been called, data is %s and L is %s" % (data, L))

if len(data)<7:
return L

total = 0
dates = 0

for value in data[:7]:
if w[value] != "None":
total += float(w[value])
dates += 1
L.append(total / dates)

return separate(data[7:], L)

最佳答案

取自 the documentation :

The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes.

[...]

If you don’t want the default to be shared between subsequent calls, you can write the function like this instead:

def f(a, L=None):
if L is None:
L = []
L.append(a)
return L

关于python - 为什么当多次调用 Python 3 函数时,该函数的默认值会被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981239/

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