Python——if语句和真值测试

if语句

一般形式:

if <test1>:
	<statements1>
elif <test2>:
	<statements2>
else <test3>:
	<statements3>
注意:Python中没有switch或case语句,在Python中,多路分支是写成一系列的if/elif测试,或者对字典进行索引运算或搜索列表。因为字典和列表可以在运行时创建,有时会比硬编码的if逻辑更有灵活性。
>>> choice = 'ham'
>>> print({'spam':1.25,
       'ham':1.99,
       'eggs':0.99,
       'bacon':1.10}[choice])
1.99
上面的字典就是多路分支,根据键的选择进行索引,再分支到一组值中的一个,很像C语言中的Switch。当没有键匹配时,按默认情况处理,就像我们之前见到的,字典默认值能编码到has_key测试、get方法调用或异常捕捉中。在这里也能用相同的技术,在字典式的多路分支中用于编写默认动作。如下是通过get方法处理默认值的情况:
>>> branch = {'spam':1.25,'ham':1.99,'eggs':0.99}
>>> print(branch.get('spam','Bad Choice'))
1.25
>>> print(branch.get('bacon','Bad Choice'))
Bad Choice
============================================================
一些语法规则:

【字典适用于将值和键关联,但如果通过if语句来编写的更复杂动作呢?在之后将会学到字典也可以包含函数,从而代表更为复杂的分支动作,并实现一般的跳跃表格。这类函数作为字典的值,通常写成函数名或lambda,通过增加括号调用来触发其动作】

【虽然字典式多路分支在处理动态数据的程序中很有用,但多数程序员发现,编写if语句是执行多路分支最直接的方式。编写代码的原则是:有疑惑的时候,就遵循简易性原则和可读性原则】

【缩进:每个缩进层级使用4个空格或者一个制表符,这是通常的惯例;避免混合使用制表符和空格!】

【相邻的字符串常量是隐式地连接起来的】

============================================================

真值测试

在Python中:
*任何非零数字或非空对象都为真
*数字零、空对象以及特殊对象None都被认作是假
*比较和相等测试会递归地应用在数据结构中
*比较和相等测试会返回True或False(1和0的特殊版本)
*布尔and和or运算符会返回真或假的操作对象

Python中有三种布尔表达式运算符:
1.X and Y 如果X和Y都为真,就是真
2.X or Y 如果X或Y为真,就是真
3.not X 如果X为假,那就是真(表达式返回True或False)

此处,X和Y可以是任何真值或者返回真值的表达式(例如,相等测试,范围比较等)

布尔运算法在Python中是字(不是C的&&、||和!)。此外,布尔and和or运算符在Python中会返回真或假对象,而不是值True或False:

>>> 2<3,3<2
(True, False)
在Python中像这类值的比较会返回True或False作为其真值结果,但其实这些只是整数1和0和特殊版本(打印时不同,其实完全一样)

另一方面,and 和 or 运算符总会返回对象,不是运算符左侧的对象,就是右侧的对象。

就or测试而言,Python会从左至右求操作对象,然后返回第一个为真的的操作对象。再者,Python会在其找到的第一个真值操作数的地方停止,这通常叫做短路计算,因为求出结果后,就会使表达式其余部分短路:

>>> 2 or 3,3 or 2
(2, 3)
>>> [] or 3
3
>>> [] or {}
{}

你可能感兴趣的:(python,if,真值测试)