为什么;如果i<;返回100;10“其他通行证”;在python中无效吗?

为什么;如果i<;返回100;10“其他通行证”;在python中无效吗?,python,if-statement,Python,If Statement,全部 def foo(i): 如果i

全部

def foo(i):
如果i<10,则返回100,否则通过
如果i<20,则返回200,否则通过
返回1
为什么这在python中不起作用?我认为该代码的工作原理可能与:

def foo(i):
    return 100 if i < 10 else pass
    return 200 if i < 20 else pass
    return 1
def foo(i):
如果i<10:
返回100
如果i<20:
返回200
其他:
返回1
谢谢

如果i<10否则通过,则返回100

您应该将其理解为
return(如果我通过了<10,则为100)
因此,
pass
不是中的值

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

def foo(i):
    if i < 10:
        return 100
    elif i < 20:
        return 200
    else: 
        return 1
conditional_expression ::=  or_test ["if" or_test "else" expression]
expression             ::=  conditional_expression | lambda_expr

而且
pass
不是一个表达式

像这样阅读代码:

def foo(i):
    if i < 10:
        return 100
    elif i < 20:
        return 200
    else: 
        return 1
conditional_expression ::=  or_test ["if" or_test "else" expression]
expression             ::=  conditional_expression | lambda_expr
返回(如果(i<10)否则通过,则返回100)
pass不是您可以返回的值。 以下代码将起作用:

return (100 if (i < 10) else pass)
def foo(i):
如果i<10,则返回100(如果i<20,则返回200,否则返回1)

您应该将您的函数理解为

def foo(i):  
    return 100 if i < 10 else (200 if i < 20 else 1) 
def foo(i):
如果i<10:
返回100
其他:
回程通行证
如果i<20:
返回200
其他:
回程通行证
返回1

如果i<10 else pass
不是“if”语句,则返回100,这是一个

pass
是一个空操作,即当它被执行时,不会发生任何事情。当语法上需要语句,但不需要执行代码时,它可以用作占位符。不应将其用作任何逻辑的一部分。

定义此功能不起作用的原因。如果我试图定义函数,就会出现语法错误。这就是你的意思吗?你为什么认为这应该有效?语言手册的哪一部分建议在这里工作?请提供一个链接或引用,说明这应该起作用的原因。我过去认为
通行证
可能与其他语言中的含义相同-
继续
下一步
中的
for
NOP
,然后我想
如果我<10 else通过返回100
可能会被解读为
如果我<10 else下一行返回100
,这完全是一个错误为什么会投否决票?他误用了
通行证
,所以我澄清了它的正确用法。
返回通行证
不是一个有效的声明。您需要的是else子句中的
pass
。在两个示例中的表达式中都不需要括号,但它们确实有助于使代码更具可读性。