我知道这个主题已经详细讨论过了,但我的用例有些特殊
问题描述:我正在尝试分析一棵具有多个层的树。每个层可能由元素组成,这些元素在访问时可能包含进一步的可扩展元素(列表)或仅一个简单元素(非列表)。基本上,它类似于Windows/Linux文件夹和文件系统。也许以下模式将有助于更好地理解我所指的内容:
[Parent_Element]
|
+ [Element 1]
|
+ [Subelement 1.1]
+ Subsubelement 1.1.1
|
+ [hello_world]
|
Subsubsubelement 1.1.2.1
|
Subsubsubelement 1.1.2.2
|
+ Subsubelement 1.1.3
|
+ [Subelement 1.2]
|
+ Subsubelement 1.2.1
|
+ Subelement 1.3
|
+ [Element 2]
|
+ Subelement2.1
|
+ Element 3
我试着使用下面的代码,它部分地按照我想要的方式工作。问题是,在找到所需的搜索变量“hello\u world”后,我的代码也会继续运行。当第一次找到这个变量时,如果能够停止代码就好了
def search_function(parent_element, search_variable = "hello_world"):
# Get elements of parent_element
elements = parent_element.get_elements()
#
# Check if Parent_Element has subelements
# TRUE: Parent_Element is LIST
# FALSE: Parent_Element is not a LIST
if isinstance(elements, list):
#
# Loop over each elem of the parent_element and
for elem in elements:
# Check if elem has the desired name
# TRUE: Save elem
if elem.get_display_name().to_string() == search_variable:
print("Search Successful!")
return elem
break
#
# FALSE: Keep on looking in the sub-elements
else:
search_function(elem)
break
else:
pass
#
好的,多亏@KittoMi的回复,我才能够完成我的功能:
但是我必须承认,我仍然不能完全理解为什么没有全局搜索元素它就不能工作
函数正在查找搜索变量,它打印了“Find it”消息,但随后它自己进行了2-3次计算,显示的结果是另一个预期结果。 下面是返回打印(elem)的一个小示例:
这就是为什么我不得不求助于全球搜索元素。也许有人能澄清这一点
“break”永远不会在代码中执行。您应该使用
flag
并使其成为global
break
在return
之后,这就是break
从不执行的原因使用与上一条相同级别的另一条if语句对其进行控制。您可以这样编辑代码
相关问题 更多 >
编程相关推荐