第二章 运算符/表达式 流程控制 异常
概述
本章介绍Python的运算符、表达式、程序流程控制语句以及异常处理语句,在这方面,Python和java是非常类似的,我们仅需要注意它们之间的一些细微差异。另外,在本章我还会简要介绍Python语言中的两项有趣功能=列表内涵和动态表达式,虽然它们严格来说属于函数部分的内容,不过我觉得还是放在表达式一章比较合适。
无论使用什么语言,我们编写的大多数代码都包含表达式。一个表达式可以分解为运算符和操作数,运算符的功能是完成某件事,它们由一些数学运算符号或者其他特定的关键字表示,运算符需要数据来进行运算,这样的数据被称为操作数。例如,2+3是一个简单的表达式,其中+是运算符,2和3是操作数。
算术运算符与算术表达式
算术运算符是程序设计语言最基本的运算符。Python提供的算术运算符除了+、-、、/、%(求余)之外,还提供了两种java中没有提供的运算符:求幂(*)和取整除(//).下面我们就通过一段代码来解析这两个算术运算符的功能。
#-*-coding:utf-8-*-
import sys
def Main():
x=3.3
y=2.2
a=x**y
print a
#输出即3.3的2.2次幂
b=x//y
print b
#输出1.0取整除返回商的整数部分
c=x/y
print c
#输出1.5,注意体会普通除与取整除的区别
if __name__=="__main__":
Main()
赋值就是给一个变量赋一个新值,除了简单的=赋值之外,Python和java都支持复合赋值,例如x+=5,等价于x=x+5.
Python不支持java中的自增和自减运算符,例如X++这种语句在Python中会被提示语法有错误。java程序员可能习惯了这种表达式,在Python中,请老老实实的写X+=1就是了。
Python的逻辑运算符与java有较大区别,Python用关键字and or not 代替了java语言中的逻辑运算符 && || !,此外Python中参与逻辑运算符的操作数不限于布尔类型,任何类型的值都可以参与逻辑运算中去。
用逻辑运算符将操作数或表达式连接起来就是逻辑表达式。与java一样,Python中逻辑表达式是短路执行的,也就是说只有需要时才会进行逻辑表达式右边值的计算,例如表达式a and b 只有当a为true时才计算b.思考一下,if(0 and 10/0):这条语句会引发除数为零的异常吗?
此外还要注意:在Python中,and和or所执行的逻辑运算并不返回布尔值,而是返回它们实际进行比较的值之一。下边是一个例子:
#-*-coding:utf-8-*-
import sys
def Main():
print 'a' and 'b'
print '' and 'b'
if __name__=="__main__":
Main()
关系运算符与关系表达式
关系运算符实际上是逻辑运算的一种,关系表达式的返回值总是布尔值。Python中的比较操作符与java完全是一样的,包括== != > < >= <=共6种。
除了基本的变量比较外,Python的关系运算符还包括身份运算符is.在Python中,is用来检验两个对象在内存中是否指向同一个对象(还记得一切数据皆对象吗?一切命名皆引用吗)。
三元运算符是c/c++系语言所特有的一类运算符,例如,对表达式b?x:y,先计算条件b,然后进行判断,如果b的值为true,则计算并返回x的值,否则计算并返回y的值。
在Python中,提供了专门的逻辑分支表达式来模拟java系中的三元运算,我们也可以在一行语句中完成三元运算,例如 print ‘偶数’ if x%2==0 else ‘奇数’