为什么“如果i< 10 else pass则返回100”在python中无效?

时间:2010-11-08 09:54:47

标签: python if-statement

所有

def foo(i):
    return 100 if i < 10 else pass
    return 200 if i < 20 else pass
    return 1

为什么这在python中不起作用?我想这段代码可能与以下内容相同:

def foo(i):
    if i < 10:
        return 100
    elif i < 20:
        return 200
    else: 
        return 1

谢谢!

5 个答案:

答案 0 :(得分:20)

documentation中,您会看到“三元运算符”应该是这样的:

conditional_expression ::=  or_test ["if" or_test "else" expression]
expression             ::=  conditional_expression | lambda_expr

passstatement而不是表达式

答案 1 :(得分:10)

  

return 100 if i < 10 else pass

你应该把它读作return (100 if i < 10 else pass) 所以pass不是值

答案 2 :(得分:9)

阅读你的代码:

return (100 if (i < 10) else pass)

传递不是您可以返回的值。 以下代码可以使用:

def foo(i):  
    return 100 if i < 10 else (200 if i < 20 else 1) 

答案 3 :(得分:2)

pass是一个空操作,即当它被执行时,没有任何反应。当语法需要语句但不需要执行代码时,它可用作占位符。它不应该被用作任何逻辑的一部分。

答案 4 :(得分:0)

您应该将您的功能视为

def foo(i):
    if i < 10:
        return 100
    else:
        return pass
    if i < 20:
        return 200
    else:
        return pass
    return 1

return 100 if i < 10 else pass不是“if”语句,这是ternary operator