
2.4 表达式和运算
编写的大多数语句(逻辑行)都包含表达式。表达式根据一个运算符以及一个或两个操作数执行特定的操作。一个简单的表达式例子如2+3。表达式可以分解为运算符和操作数,表达式2+3中,2和3是操作数,+是运算符。操作数可以是常量、变量或函数结果等。运算符可以是算术运算符、布尔运算符和比较运算符等。
2.4.1 算术运算符
表2-11是Python的算术运算符及其实例,表中假设变量a=9,b=20。
表2-11 算数运算符

2.4.2 布尔值
Python中的布尔(bool)类型是两个常量对象True和False,注意首字母大写。比较运算符<、>、==等返回的类型就是bool类型,后面章节会详细介绍。用于表达真假(尽管其他值也可以被视为真或假),在数字中它们分别与整数1和0相对应。通过内置函数bool()可用于将任何值转换为布尔值。
Python中任何对象都可以测试其真值,用于后面的if或while条件测试,或者布尔运算操作。
一个对象会被默认为真,除非这个对象的类定义了__bool__() 方法,返回False,或者__len__()方法返回0。以下几个内置对象被认为是假。
1)常量:None和False。
2)任意数字类型的零:0,0.0,0j,Decimal(0),Fraction(0, 1)。
3)空序列和集合:'',(),[],{},set(),range(0)。
具有布尔结果的运算和内置函数返回0或False表示假,1或True表示真。
2.4.3 布尔运算符
Python中有3种布尔表达式运算符。
1)x or y:如果x是假,则返回y的值,否则返回x的值。
2)x and y:如果x是假,则返回x的值,否则返回y的值。
3)not x:如果x是假,则返回True,否则返回False。
注意:上面3种布尔运算的优先级顺序由低到高。not运算的优先级低于非布尔运算,比如:not a==b相当于not (a==b),b==not a不是正确的运算表达式。
2.4.4 比较运算符
表2-12是Python的比较运算符,表中假设变量a=10,b=20。
表2-12 Python比较运算符

注意:
1)两个比较对象必须是同一对象,两个不同对象的比较,会报TypeError异常(例外:不同的数字类型可以比较)。
2)如果将复数和一个内置数字类型比较,会报TypeError异常。
3)is和is not可以应用于任何对象,而且不会引发异常。
2.4.5 运算优先级
表2-13是Python运算符优先级的总结,优先级由低到高,同一单元格中的运算符,优先级一样。
表2-13 运算符优先级(由低到高)
