我一定是在做一些愚蠢的事情,但我只是没有看到它。我无法使用以下简单代码。
>>> def a_bigger_than_b(a,b):
... 'Yes' if a > b
File "<stdin>", line 2
'Yes' if a > b
^
SyntaxError: invalid syntax
答案 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!'
给出了详细解释
*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'