可以说,任何一个真正有用的程序,都至少包含一个条件分支语句。但是,秉承着“一件事件只有一种做法”的原则,在Python里,我们只能使用if ... elif ... else
在多个条件中选择,而没有类似switch...case
这样的用法。
使用if语句
由于Python是使用缩进表示代码块的,而没有类似{}
这样的语法。因此,它的if
语句用起来和C或Swift这样的语言有些不同:
num = 2
if num < 10:
content = '{0} is less than 10'.format(num)
print(content)
可以看到:
- Python中的
if
语句后面,要使用:
表示语句结束; - 属于
if
代码块的语句,必须有相同的缩进,因此,下面的写法都会导致运行时错误:
'''
!!! The following code will crash. DO NOT do it.
'''
if num < 10:
content = '{0} is less than 10'.format(num)
print(content)
if num < 10:
content = '{0} is less than 10'.format(num)
print(content)
了解了if
的写法之后,各种分支条件的写法就很简单了:
if num < 10:
content = '{0} is less than 10'.format(num)
print(content)
elif 10 < num < 20:
print('between 10 and 20')
else:
print('greater than or equal to 20')
不太一样的Boolean操作
在上面这个例子里,elif
用10 < num < 20
这样的形式连接了两个判断,即num > 10
并且num < 20
,但在现实生活中,要同时判断的,并不是同一个事物。当我们要判断多个不同条件的时候,就需要使用Boolean运算,和你在其他编程语言中的经验不同的是,Python的逻辑运算,更接近自然语言。例如,之前的num
判断还可以写成这样:
f num < 10:
content = '{0} is less than 10'.format(num)
print(content)
elif num > 10 and num < 20:
print('between 10 and 20')
else:
print('greater than 20')
注意到and
的用法了么?它和其他语言中的&&
运算符含义是相同的,表示要求条件同时成立。除了and
之外,我们还可以使用or
表示“只要有一个成立”,它和其他语言中的||
操作符是类似的:
elif num == 10 or num == 20:
print('equal to 10 or 20')
或者,使用not
表示“当前条件不成立”,它和其他语言中的!
操作符是类似的:
elif not num == 10:
print('not equal to 10')
当然,这里“不等于10”是可以有它自己更直观的写法的:
elif num != 10:
print('not equal to 10')
通常,我们在更一般的boolean表达式中,使用not
,例如这样:
elif num not in [10, 20]:
print('not equal to 10 or 20')
哪些值会被认为是False
理解了boolean表达式之后,我们来看Python中哪些值会被认为是False
:简单来说,就是一切有空值语义的值。因此,除了类似2 == 3
这种结果为False
之外,当Python评估下面这些表达式的时候,也都会认为是False
:
if not "":
print('empty string')
if not ():
print('empty tuple')
if not []:
print('empty list')
if not None:
print('none')
name == 'main'
由于这一节我们提到了if
,在最后,来看一个经常会在Python脚本中见到的写法:
if __name__ == '__main__':
print('execute as a single script.')
其中,__name__
是Python中的一个特殊变量,当脚本被Python解释器独立执行的时候,就会把它设置成__main__
。稍后会看到,我们还可以使用import
导入其他Python代码,这时,对应文件的__name__
变量就不再是__main__
了。
因此,上面的代码作用就是,执行一些当脚本被独立执行时才执行的代码,通常我们要独立调试某个Python文件的时候,会用到这个特性。
网友评论