IF/THEN的Python语法与PHP的比较

2024-09-25 08:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个PHP代码:

 if($id = $this->ci->srr->check_faca_indiv($name))
{
    return $id;
} elseif($id = $this->_addIndiv($name)) {
    return $id;
} else {
    return null;

我到处都在使用这种基本的结构,可能不太好,但我已经习惯了。这些函数基本上尝试做一些简单的操作,如果失败,则返回空值。我试图将其移植到Python中,但遇到语法错误,最后将其修改为:

^{pr2}$

我想这让我回到了同一个地方,但我不太喜欢它——有没有一种更类似于PHP的方法,而我却没有呢?在


Tags: 代码nameciidreturnifcheckthis
2条回答

比如:

return checkIndiv(name) or addIndiv(name)

代码的基本问题是,最后一个分支没有作用。即使在PHP示例中,它也基本上说:

if (null) return null;

您可以将所有内容简化为:

^{pr2}$

(如果indiv\u id可能成为与False相比较的内容,则应该对照None进行检查,但使用is而不是{}!)在

也许你可以在例外情况下工作:

def check_or_add(name):
    try:
        return checkIndiv(name)
    except CheckException:
        return addIndiv(name)

不过,总的来说,您的语义让我觉得奇怪:我不希望名称中带有“check”的函数返回一个对象,而不是简单地True或{}。我可能会用不同的名字:

id = get_indiv(name)
if id:
    return id
else:
    return new_indiv(name)

这也使詹姆斯的解决方案更具可读性:

return get_indiv(name) or new_indiv(name)

相关问题 更多 >