Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IF/THEN的Python语法与PHP的比较_Php_Python_Syntax_If Statement - Fatal编程技术网

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

IF/THEN的Python语法与PHP的比较,php,python,syntax,if-statement,Php,Python,Syntax,If Statement,我有一个PHP代码: if($id = $this->ci->srr->check_faca_indiv($name)) { return $id; } elseif($id = $this->_addIndiv($name)) { return $id; } else { return null; 我在所有地方都使用这种基本结构,可能不太好,但我已经习惯了。这些函数基本上尝试执行一些简单的操作,如果失败,它们将返回一个空值。在将其移植到Pyt

我有一个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)
比如:

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可以成为与
False
相比较的东西,您应该对照
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)
这也使得詹姆斯的解决方案更具可读性:

return get_indiv(name) or new_indiv(name)

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

if (null) return null;
您可以将所有内容简化为:

indiv_id = checkIndiv(name)
if indiv_id:
    return indiv_id
else:
    return addIndiv(name)
(如果indiv_id可以成为与
False
相比较的东西,您应该对照
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)
这也使得詹姆斯的解决方案更具可读性:

return get_indiv(name) or new_indiv(name)


使用
如果indivu id不是None:
或者更简洁地使用
如果indivu id:
这整件事是不是打算成为某种
获取或创建()
?我和fingerman在一起,你应该先找到elif。@fingerman:elif在这种情况下会有什么帮助?哦,真不敢相信我那里没有elif。谢谢你的提醒。如果indivu id不是None,请使用
或者更简洁地使用
如果indivu id:
这整件事都是为了某种
获取或创建()
?我和fingerman在一起,你应该先找到elif。@fingerman:elif在这种情况下会有什么帮助?噢,真不敢相信我那里没有elif。谢谢你的提醒。也许简短,但可读?checkIndiv和addIndiv似乎都不做它们的名字所宣传的事情。这些函数做什么?我没有写他们的名字。OP要求一个更简单的方法。非常感谢。我不知道Python中的这种语法,现在在所有函数中都使用它。这些函数有点混乱——基本上,它们检查某个记录是否已经输入到数据库中,如果没有,则添加它。在这两种情况下,它们都返回记录的id。可能很短,但可读吗?checkIndiv和addIndiv似乎都不做它们的名字所宣传的事情。这些函数做什么?我没有写他们的名字。OP要求一个更简单的方法。非常感谢。我不知道Python中的这种语法,现在在所有函数中都使用它。这些函数有点混乱——基本上,它们检查某个记录是否已经输入到数据库中,如果没有,则添加它。在这两种情况下,它们都会返回记录的id。您的回答非常有用,我实际上用它来回答我遇到的另一个问题。现在如果你想让我帮你发帖…@tchaymore:不,我很高兴我能帮上忙。你的回答非常有用,我实际上用它来回答我遇到的另一个问题。现在如果你想让我帮你发帖…@tchaymore:不,我很高兴能帮上忙。