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 中可以实现这样的实现吗?
【问题讨论】:
不,因为语法错误告诉您在这种情况下不可能。raise
和 return
都是语句,不是表达式,不能成为条件表达式的一部分
其他人怎么说。而且,为什么??
【参考方案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三元运算[重复]的主要内容,如果未能解决你的问题,请参考以下文章