Python三元操作



我有以下代码:

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中是可能的吗?

因为这不可能。这就是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不返回任何数据。

最新更新