x = False
if x:
print 'x was True!'
else:
print 'I will be printed in any case where x is not true'
在代码的第一行,我们赋值x = False。
我想了解该行' if x:'手段。 当x的值为False时,如果x为&x 39;将被执行为'如果为假:'。因此,声明' x是真的!'应该打印出来。
但相反,'我将在任何情况下打印,其中x不是真的'打印出来。
我认为我在理解布尔的工作方式上遇到了一些问题。我哪里错了?
答案 0 :(得分:2)
Python不懂英语。 不知道 print
实际上意味着后引号中的内容是什么。因此,如果执行到达行print 'x was True!'
,它只是盲目地打印出该文本。但执行不会到达那一行。
在
if some_expression:
do_this_stuff()
else:
do_that_stuff()
首先,评估some_expression
如果它的布尔值为True
,则会调用do_this_stuff()
但如果some_expression
的布尔值为False
,则会调用do_that_stuff()
。
您的代码有if x:
,其中x
为False
,因此只有else
部分中的代码才会被执行。
if
后面的表达式可以是任何表达式,它不必是实际的布尔True
或False
。
在Python中,当出现在布尔上下文中时,各种“null”对象被认为是False:这包括数字零,空字符串''
,空列表[]
,空元组()
,空字典{}
和空集set()
;我想你可以看到这种模式。 :)非null对象被认为是True。
这是一个方便的功能,一旦你习惯它,它使代码更简洁,更易读。
答案 1 :(得分:0)
else块仅在if条件为false时执行。 所以在这个代码中给出False,它会跳转到else块。
答案 2 :(得分:0)
if ... else语句的语法是:
if boolean_expression :
# statement(s) will execute if the boolean expression is true
else
# statement(s) will execute if the boolean expression is false
如果布尔表达式的计算结果为True,那么将执行if块,否则将执行else块。