仅当布尔变量设置为True
. 所以,在看了这个之后,我尝试了一个简单的例子:
>>> a = 100
>>> b = True
>>> print a if b
File "<stdin>", line 1
print a if b
^
SyntaxError: invalid syntax
如果我写同样的事情print a if b==True
。
我在这里错过了什么?
Python不不会有拖尾if
声明。
if
Python中有两种:
if
陈述:
if condition: statement
if condition:
block
if
表达式(在 Python 2.5 中引入)
expression_if_true if condition else expression_if_false
请注意,print a
和b = a
都是陈述。只有a
部分是表达式。所以如果你写
print a if b else 0
它的意思是
print (a if b else 0)
同样,当你写
x = a if b else 0
它的意思是
x = (a if b else 0)
如果没有else
子句,它会打印/分配什么?打印/作业还在那里。
请注意,如果你不希望它出现在那里,你总是可以将常规if
语句写在一行上,尽管它的可读性较差并且确实没有理由避免使用两行变量。
我认为这
if condition: statement
在多行语句的情况下不起作用。是的,但是您不需要使用 if,只需使用如下示例中所示的布尔逻辑即可。
@JanHudec 如果 Python 没有尾随
if
,那么为什么这样做:print [i for i in range(10) if i%2]
?我希望他们允许它超出理解范围......@mbomb007,这也不是尾随的 if语句。它只是列表(或生成器)理解的一部分。注意if之前的东西不是语句,是两个表达式,
for
中间有。@AlexandervonWernherr,是的,这听起来很合理。