运算即对数据的操作,常常可以用一些简洁的符号记述,这些符号称为运算符或操作符,被运算的对象(数据)称为运算量或操作数。表达式(expression)是将运算对象用运算符连接起来组成的式子,其中的运算对象可以是常量、变量或者函数。Python的运算符非常丰富,包括赋值运算符、算术运算符、关系运算符、逻辑运算符、成员运算符、身份运算符等。
2.3.1 赋值运算符
赋值运算,其含义是将值赋给变量,或者说将值传送到变量所对应的存储单元中。Python的赋值和一般的高级语言的赋值有很大的不同,并不是直接将一个值赋给一个变量,而是通过引用传递的,在赋值时,无论这个对象是新创建的还是已经存在的,都是将该对象的引用赋值给变量。示例代码:
>>>a = 5
>>>b = 9
>>>a = b
对以上代码的解释,a指向的是5,b指向的是9,当执行“a = b”的时候,b把自己指向的地址(即9的内存地址)赋给了a,那么最后的结果就是a和b同时指向了9。
Python是动态类型语言,不需要预先定义变量类型,变量的类型和值在赋值那一刻被初始化。示例代码:
>>>x = 67.8
>>>x = "ABCD"
2.3.2 算术运算符
算术运算符是常用的运算符,用来执行算术运算。Python的算术运算符有:+(加)、-(减)、* (乘)、/(精确除法)、//(地板除法)、%(求模)、** (乘方),其中加、减、乘及乘方运算规则与平常使用习惯一致,不再赘述。示例代码:
>>>a = 21
>>>b = 10
>>>c = a + b
>>>d = a - b
>>>e = a * b
>>>f = b**2
>>>print(c, d, e, f)
31 11 210 100
Python的除法运算分为精确除法和地板除法。对于精确除法(“/”),其运算结果总是会返回真实的商,不管操作数是整形还是浮点型。示例代码:
>>>1/2
0.5
>>>1.0/2.0
0.5
对于地板除法(“//”),不管操作数为何种类型,其商值取不大于精确结果的最大整数值。示例代码:
>>>23//3
7
>>>-23//-3
7
>>>23//(-3)
-8
>>>-23//3
-8
>>>22.3//3
7
>>>-22.3//3.1
-8.0
模运算(“%”)也称求余运算,要求运算对象都为整型。如果操作数全为正数,其返回值也为正数;如果操作数存在负值,其结果符号由第二个操作数符号决定。示例代码:
>>>10%3
1
>>>10%-3
-1
>>>-10%3
2
>>>-10%-3
-1
2.3.3 关系运算符
关系运算符又称比较运算符,即比较两个操作数的大小关系,若关系成立,则运算结果为逻辑值True,否则结果为False。Python常用的关系运算符有<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)。示例代码:
>>>i, j, k = 1, 2, 3
>>>i > j
False
>>>k == i + j
True
>>>i < j + k
True
说明,关系运算内各运算符优先级相同,但关系运算符的优先级低于算术运算符优先级。
2.3.4 逻辑运算符
逻辑运算又称布尔运算。Python的逻辑运算符有and(逻辑与)、or(逻辑或)、not(逻辑非)。其中,逻辑非的优先级最高,逻辑与次之,逻辑或的优先级最低。Python的逻辑运算结果不同于一般高级语言(如C,C++或Java)。一般后者的逻辑运算值都是布尔值,而Python则不同。
对于非运算(or),Python运算规则与这些语言相比,并没有特别的地方。not只有两个返回值,True和False。在Python中,真值为假的对象,包括False,None,数字0,空字符串以及空的容器类型。除此以外的任何对象均为真。示例代码:
>>>not False
True
>>>not None
True
>>>not 0
True
>>>not ""
True
>>>not 1
False
对于与运算(and),Python的运算规则是若左边的表达式为真,则返回右边表达式的值;否则,返回左边表达式的值。示例代码:
>>>1 and 2
2
>>>1 and False
False
>>>True and False
False
>>>0 and 1
0
>>>0 and True
0
>>>0 and False
0
>>>False and 1
False
>>>False and True
False
对于或运算(or),Python的运算规则是若左边的表达式为真,则返回左边的表达式的值;否则,返回右边的表达式的值。示例代码:
>>>1 or 2
1
>>>1 or False
1
>>>True or False
True
>>>0 or 1
1
>>>0 or True
True
>>>0 or False
False
>>>False or 1
1
>>>False or True
True
说明,对于“与运算”a and b,如果a为真,继续计算b,b将决定最终整个表达式的真值,所以,结果为b的值;如果a为假,无需计算b,就可以得知整个表达式的真值为假,所以,结果为a的值。
对于“或运算”a or b,如果a为真,无需计算b,就可得知整个表达式的真值为真,所以结果为a的值;如果a为假,继续计算b,b将决定整个表达式最终的值,所以结果为b的值。
2.3.5 成员运算符
Python的成员运算符in,其作用是在指定的序列中查找某个值是否存在,存在就返回True,否则返回False。指定的序列包括字符串、列表或元组,not in与其运算结果相反。示例代码:
>>>3 in (19, 28, 3, 34, 0)
True
>>>3 not in (22, 28, 3, 89, 0)
False
2.3.6 身份运算符
身份运算符is,用于测试两个变量是否指向同一个对象,not is与其运算结果相反。示例代码:
>>>a = 20
>>>b = 20
>>>a is b
True
>>>a is not b
False
网友评论