2013-01-12 43 views
0
def get_connection_tag(connections_tag, connection_type): 
    for child in connections_tag.children: 
     concat = "".join(child.attributes) 
     if connection_type in concat: 
      return child 
    return -1 

此功能用作搜索功能,以查找connection_tag内是否存在指定的connection_type。如果成功,则返回connections_tag.children中的元素,但如果失败则返回-1。确定此功能是否成功的pythonic方式是什么?

如果搜索功能成功,我想调用一个函数来修改这个子元素,但是如果它不成功,我想调用一个函数来生成一个子元素。

我可以简单地叫isinstance()与返回的儿童和类,我也可以检查,看看如果返回child == -1,但我觉得我缺少一个更合适的方式。也许与尝试/除了并提高TypeError有关?

+0

这是相当奇怪的返回'-1',这将是更好地引发KeyError或返回None。 –

+0

返回-1是一个C的东西。 – engineerC

+0

该函数在看到第一个孩子后返回,它从不循环。你确定这就是你需要的吗? – zch

回答

2

在这种情况下,返回“无”会更合适,因为它直观地表明没有找到连接。或者,您也可以引发异常,如果执行必须停止或者更严重的错误,我通常会引发异常。

根据您的使用情况下,代码是这样的:

tag = get_connection_tag(connections_tag, connection_type) 
if not tag: 
    pass