为什么"return 100 if i < 10 else pass"在Python中无效?

5 投票
5 回答
4228 浏览
提问于 2025-04-16 06:44

大家好;

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 个回答

10

这样来看你的代码:

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

“pass”并不是一个可以返回的值。下面的代码是可以正常工作的:

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

文档中,你会看到“条件运算符”应该是这样的:

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

pass是一个语句,而不是一个表达式。

10

return 100 if i < 10 else pass

你可以把它理解为 return (100 if i < 10 else pass),所以 pass 不是一个值。

撰写回答