所有
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
谢谢!
答案 0 :(得分:20)
在documentation中,您会看到“三元运算符”应该是这样的:
conditional_expression ::= or_test ["if" or_test "else" expression]
expression ::= conditional_expression | lambda_expr
和pass
是statement而不是表达式
答案 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