IF / THEN的Python语法与PHP相比

| 我在PHP中有以下代码:
 if($id = $this->ci->srr->check_faca_indiv($name))
{
    return $id;
} elseif($id = $this->_addIndiv($name)) {
    return $id;
} else {
    return null;
我在整个地方都使用了这种基本结构,虽然可能不太好,但是这是我习惯的。这些函数基本上会尝试执行一些简单的操作,如果失败,它们将返回空值。我试图在将其移植到Python时模仿它,但是遇到语法错误并最终对其进行了修改:
indiv_id = checkIndiv(name)
if indiv_id != None:
    return indiv_id
indiv_id = addIndiv(name)
if indiv_id != None:
    return indiv_id
else:
    return None
我认为那可以带我到同一个地方,但我不太喜欢它-我有没有更像PHP的方法而缺少?
已邀请:
就像是:
return checkIndiv(name) or addIndiv(name)
您的代码的基本问题是,最终分支毫无用处。即使在您的PHP示例中,它也基本上说:
if (null) return null;
您可以将所有内容减少为:
indiv_id = checkIndiv(name)
if indiv_id:
    return indiv_id
else:
    return addIndiv(name)
(如果indiv_id可以与ѭ5相比,则应检查
None
,但应使用
is
而不是
==
!) 也许您可以例外处理:
def check_or_add(name):
    try:
        return checkIndiv(name)
    except CheckException:
        return addIndiv(name)
但是,总的来说,您的语义让我感到奇怪:我不希望名称中带有\“ check \”的函数返回对象,而不是简单地返回
True
False
。我可能会使用其他名称:
id = get_indiv(name)
if id:
    return id
else:
    return new_indiv(name)
这也使James的解决方案更具可读性:
return get_indiv(name) or new_indiv(name)

要回复问题请先登录注册