为什么;如果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
。在两个示例中的表达式中都不需要括号,但它们确实有助于使代码更具可读性。