使用三元运算符的返回语句

Posted

技术标签:

【中文标题】使用三元运算符的返回语句【英文标题】:Return statement using ternary operator 【发布时间】:2012-08-28 11:14:44 【问题描述】:

c 我可以做类似的事情:

int minn(int n, int m)
 return (n<m)? n:m

但在 python 中我无法达到同样的效果:

def minn(n,m):
    return n if n<m else return m

这给了Syntax Error

我知道我可以这样做:

def minn(n,m):
    return min(n,m)

我的问题是,我不能在 python 中使用三元运算符吗?

【问题讨论】:

没有什么叫做两个返回语句! return (n&lt;m)? n:m 基于比较 n&lt;m 仅返回一个值,n 或 m @Curious 我有一个奇怪的困惑,现在它清楚了。 在python中你可以写和return n if n&lt;m else m一样的东西 【参考方案1】:
def minn(n,m):
    return n if n<m else m

expr1 if expr2 else expr3 表达式是一个表达式,而不是一个语句。 return 是一个陈述(见this 问题)

因为表达式不能包含语句,所以您的代码会失败。

【讨论】:

【参考方案2】:

您的 C 代码不包含两个 return 语句。你的python代码也不应该...你的三元表达式的翻译是n if n&lt;m else m,所以当你返回值时使用那个表达式:

def minn(n,m):
    return n if n<m else m

【讨论】:

嗯。如果您考虑一下,这有点明显,但考虑到我拥有计算机科学学位和 4 年的 Java/软件工程经验,我仍然在这个问题上摸不着头脑。感谢发帖。

以上是关于使用三元运算符的返回语句的主要内容,如果未能解决你的问题,请参考以下文章

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

C#中的三元运算符

返回引用时的 C++ 三元运算符

python条件(三元)运算符

26.Python三目运算符(三元运算符)用法详解

三元运算符的返回类型是如何确定的? [复制]