我有这样的方法:的Python - 约法很迷茫,while循环
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)
来测试和“警报()”我这孩子被打。这个例外从未被提出。你会认为这是因为函数在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)
引发异常。我很困惑。我敢肯定,这是荒谬的,但我一直持续到2岁,并且我不能够直白地思考我的小脑袋。
'is_current_node'方法中有什么? – 2010-08-27 19:12:21
它只是针对'self._url'检查一个静态值,并将比较结果作为布尔值返回。 – orokusaki 2010-08-27 19:13:40
@Eric - 不应该在前两个版本中的任何一个中始终提出异常?第二个说:“如果是真的:提高”,并且不从函数返回。第一个说'raise',如果没有'如果True:'从函数返回。 – orokusaki 2010-08-27 19:15:56