2.3 运算符与表达式

来源:互联网 发布:js object to string 编辑:程序博客网 时间:2024/06/05 23:43

  运算即对数据的操作,对于最基本的运算形式,常常可以用一些简洁的符号记述,这些符号称为运算符或操作符,被运算的对象(数据)称为运算量或操作数。Python中的数据运算主要是通过对表达式的计算完成的。表达式(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/20.5>>>1.0/2.00.5

  对于地板除法(“//”),不管操作数为何种类型,其商值取不大于精确结果的最大整数值。示例代码:

>>>23//37  >>>-23//-37>>>23//(-3)-8 >>>-23//3-8>>>22.3//37>>>-22.3//3.1-8.0

  模运算(“%”)也称求余运算,要求运算对象都为整型。如果操作数全为正数,其返回值也为正数;如果操作数存在负值,其结果符号由第二个操作数符号决定。示例代码:

>>>10%31>>>10%-3-1>>>-10%32>>>-10%-3-1

2.3.3 关系运算符

  关系运算符又称比较运算符,即比较两个操作数的大小关系,若关系成立,则运算结果为逻辑值True,否则结果为False。Python常用的关系运算符有<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)。示例代码:

>>>i, j, k = 1, 2, 3>>>i > jFalse>>>k == i + jTrue>>>i < j + kTrue

  说明,关系运算内各运算符优先级相同,但关系运算符的优先级低于算术运算符优先级。

2.3.4 逻辑运算符

  逻辑运算又称布尔运算。Python的逻辑运算符有and(逻辑与)、or(逻辑或)、not(逻辑非)。其中,逻辑非的优先级最高,逻辑与次之,逻辑或的优先级最低。Python的逻辑运算结果不同于一般高级语言(如C,C++或Java)。一般后者的逻辑运算值都是布尔值,而Python则不同。
  对于非运算(or),Python运算规则与这些语言相比,并没有特别的地方。not只有两个返回值,True和False。在Python中,真值为假的对象,包括False,None,数字0,空字符串以及空的容器类型。除此以外的任何对象均为真。示例代码:

>>>not FalseTrue>>>not NoneTrue>>>not 0True>>>not ""True>>>not 1False

  对于与运算(and),Python的运算规则是若左边的表达式为真,则返回右边表达式的值;否则,返回左边表达式的值。示例代码:

>>>1 and 22>>>1 and FalseFalse>>>True and FalseFalse>>>0 and 10>>>0 and True0>>>0 and False0>>>False and 1False>>>False and TrueFalse

  对于或运算(or),Python的运算规则是若左边的表达式为真,则返回左边的表达式的值;否则,返回右边的表达式的值。示例代码:

>>>1 or 21>>>1 or False1>>>True or FalseTrue>>>0 or 11>>>0 or TrueTrue>>>0 or FalseFalse>>>False or 11>>>False or TrueTrue

  说明,对于“与运算”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 bTrue>>>a is not bFalse