有没有 '?' Python中的控制流? [复制]
Posted
技术标签:
【中文标题】有没有 \'?\' Python中的控制流? [复制]【英文标题】:Is There '?' Control Flow in Python? [duplicate]有没有 '?' Python中的控制流? [复制] 【发布时间】:2011-12-08 08:50:48 【问题描述】:可能重复:Python Ternary Operator
有类似'?'的控制流算子吗? python中的C/C++?
如果有类似这样的代码块:
return n <= 1 ? n : fibo(n-1) + fibo(n-2)
会出现这样的错误:
File "fibonacci.py", line 2
return n <= 1 ? n : fibo(n-1) + fibo(n-2)
^
SyntaxError: invalid syntax
【问题讨论】:
可能叫错了;它需要三个操作数,因此它是三进制的,就像加法是二进制一样。碰巧在python或其他algol后代中没有很多三元运算符。这在 phihag 的回答中被唯一标识为“条件表达式” 【参考方案1】:是的,条件表达式是available in Python 2.5+:
return n if n <= 1 else fibo(n-1) + fibo(n-2)
【讨论】:
需要注意的是条件是在这个python版本的中间。类 C 语言有<cond> ? <yes_expr> : <no_expr>
,但python 有更流畅的<yes_expr> if <cond> else <no_expr>
【参考方案2】:
你可以试试这个短路表达式return n > 1 and fibo(n-1) + fibo(n-2) or n
。虽然这不是三元语句,但它很简洁,可以在这种情况下完成工作。
【讨论】:
我认为这不适用于n==0
@NeilG 更新了我的答案。感谢您指出。以上是关于有没有 '?' Python中的控制流? [复制]的主要内容,如果未能解决你的问题,请参考以下文章