gpt4 book ai didi

Python - 对方法和 while 循环非常困惑

转载 作者:行者123 更新时间:2023-11-30 23:57:38 25 4
gpt4 key购买 nike

我有这个方法:

def is_active(self):
if self.is_current_node():
return True
cur_children = self.get_children()
while cur_children is not None:
for child in cur_children:
if child.is_current_node():
return True
raise Exception(child.display_name)
cur_children = cur_children.get_children()
return False

我将这个方法放在一起,并放置了 raise Exception(child.display_name) 来测试并“alert()”我哪个 child 被击中。永远不会引发异常。您可能会认为这是因为该函数在 if child.is_current_node() 部分返回了 True。好吧,如果我用以下内容替换 if 部分:

        for child in cur_children:
if child.is_current_node():
raise Exception(child.display_name)

它仍然不会引发异常。但是如果我这样做:

        for child in cur_children:
raise Exception(child.display_name)

引发异常。我很困惑。我确信这很荒谬,但我才两岁,我还无法用我小小的大脑思考这个问题。

最佳答案

如果列表中的第一个子节点 .is_current_node(),那么您的第一个代码片段中永远不会引发异常。

您拥有的所有证据都支持这样的想法:self.is_current_node() 始终为 true,或者第一个扫描的子节点 .is_current_node()。鉴于第三个代码片段,情况似乎是后者。

编辑:消除误解( child != self ):/

其实我想问一下,这是做什么的?它看起来隐隐约约像递归树遍历,但事实并非如此。 (特别是 cur_children = cur_children.get_children() 行有点奇怪)

关于Python - 对方法和 while 循环非常困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587345/

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