我在同一行使用if时的Python语法错误

时间:2014-06-27 09:34:00

标签: python

我一定是在做一些愚蠢的事情,但我只是没有看到它。我无法使用以下简单代码。

>>> def a_bigger_than_b(a,b):
...   'Yes' if a > b
  File "<stdin>", line 2
    'Yes' if a > b
                 ^
SyntaxError: invalid syntax

3 个答案:

答案 0 :(得分:4)

def a_bigger_than_b(a,b):
...   return 'Yes' if a > b else 'No!'

实际上,在这种情况下,您需要将其用作Ternary Operator

我认为你必须给予其他,这可以通过

很好地理解

首先

c='Yes' if a > b

如果a小于b,这个值的含义是不明确的,所以其他必须

正确的语法

c='Yes' if a > b else 'No!'

here

给出了详细解释
*On 9/29/2005, Guido decided to add conditional expressions in the
    form of "X if C else Y".

    The motivating use case was the prevalance of error-prone attempts
    to achieve the same effect using "and" and "or".

    Previous community efforts to add a conditional expression were
    stymied by a lack of consensus on the best syntax.  That issue was
    resolved by simply deferring to a BDFL best judgment call.*

答案 1 :(得分:2)

你的语法类似于Perl。

我不确定你到底想要什么

def a_bigger_than_b(a,b):
    'Yes' if a > b

要做;有几种可能的解释。

在已经提到的那些中,你可以想要

def a_bigger_than_b(a, b):
    if a > b: return 'Yes'

<=的情况下什么都不做,最终到达函数的末尾,返回(隐式)None

这是Python的单行语法,与Perl中的do_whatever if foo语法完全相同。

请注意,函数必须始终返回值;如果您没有明确说明,则会隐式返回None

答案 2 :(得分:1)

您可以更简单地更改if语句:

def a_bigger_than_b(a, b):
    return a > b and 'Yes'