gpt4 book ai didi

Python 函数和空字符串

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:28 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
“Least Astonishment” in Python: The Mutable Default Argument

编辑:这与回避无关,只是可变的默认参数特性:"Least Astonishment" and the Mutable Default Argument

非常感谢

我在 win7 64 位机器上使用 python 2.7.2,并且有一个作用于 lxml 元素的递归函数,该函数如下所示:

def recursive_search(start, stack = []):
for element in start.getchildren():
if condition1(element):
stack = recursive_search(element, stack)
elif condition2(element)
stack.append(element)
else:
pass
return stack

当我第一次调用该函数时:

output = recursive_search(starting_element)

它工作正常,我得到了我期望的结果,但是如果我用完全相同的命令再次调用它,我得到的结果是我期望的两倍,就好像我已经调用过一样:

output += recursive_search(starting_element)

或者就好像栈是一个全局变量。如果我第三次调用它,我会得到 3 倍的输出等等。

如果我调用:

output = recursive_search(starting_element, [])

然后我可以根据需要多次调用它,并且不会出现异常行为。

同样,如果我将函数修改为:

def recursive_search(start, stack = []):
if stack == []:
stack = []
for element in start.getchildren():
if condition1(element):
stack = recursive_search(element, stack)
elif condition2(element)
stack.append(element)
else:
pass
return stack

然后我可以调用:

output = recursive_search(starting_point)

我喜欢多少次都没有出现异常行为。

我的问题是:这是怎么回事 - 这是一个错误还是在将空字符串传递给 python 中的递归函数时是否存在我不知道的规则?

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