Python三元运算[重复]

Posted

技术标签:

【中文标题】Python三元运算[重复]【英文标题】:Python Ternary Operations [duplicate] 【发布时间】:2021-10-21 09:00:12 【问题描述】:

我有以下代码:

from django_app.models import Model
def func_name():
    name = "name"
    if Model.objects.filter(name=name).count() > 1:
        raise ValidationError("This name already exists.")
    else:
        return name

现在我想把它变成一个单线。这就是我所做的:

from django_app.models import Model
def func_name():
    name = "name"
    raise ValidationError("This name already exists") if Model.objects.filter(name=name).count() > 1 else return name

但这给了我一个语法错误。 在 Python 中可以实现这样的实现吗?

【问题讨论】:

不,因为语法错误告诉您在这种情况下不可能。 raisereturn 都是语句,不是表达式,不能成为条件表达式的一部分 其他人怎么说。而且,为什么?? 【参考方案1】:

因为这是不可能的。 这就是 Python 的哲学:可读的代码。 你的代码

raise ValidationError("This name already exists") if Model.objects.filter(name=name).count() > 1 else return name

将被执行为

if Model.objects.filter(name=name).count() > 1:
    raise ValidationError("This name already exists")
else:
    raise (return name)

这是无效的

您也无法避免这种情况,因为 raise 不会返回任何数据。

【讨论】:

哦,谢谢,有帮助

以上是关于Python三元运算[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python之路(sed,函数,三元运算)

如何在python中编写三元条件运算符? [复制]

Python:集合函数三元运算符

Python算术运算符赋值运算符关系运算符逻辑运算符条件运算符(三元运算符)

Java三元运算符语法[重复]

kotlin中的三元运算符[重复]