Python运算符与表达式

2016-08-08

表达式是代码的重要组成单元,比如 500.0 * 30。一个表达式由操作数和运算符构成,在前面的例子里,两个数字称为操作数, *是运算符。运算符要有操作数才能构成有意义的代码单元,因此没必要把他们分开,这一节将运算符和表达式合在一起。

表达式是有返回值的,print语句可以输出表达式的值;如果输出的是语句,则会报错。实例代码如下:

#python2x
>>> print 500.0*30
15000.0
>>> print a = 500.0*30
  File "<stdin>", line 1
    print a = 500.0*30
            ^
SyntaxError: invalid syntax

1. 算数运算符

Python算数运算符有:

  • + - * 这三个很简单不多说。
  • /Python2 和Python3 有差别。实例代码如下:
    #Python2x
    >>> 2/3
    0
    >>> 2.0/3
    0.6666666666666666
    #Python3x
    >>> 2/3
    0.6666666666666666
    
  • % 取模,返回余数。
  • // 返回商的整数部分
  • ** 幂运算

部分实例代码如下:

>>> 5%2
1
>>> 5//2
2
>>> 5**2
25

2. 关系运算符

关系运算符又叫做比较运算符,常用来比较两个对象值的关系。最常用的有:== != , > , < ,>= ,<=。 Python3中移除了Python2中的一个关系运算符<>(表示不相等)。这一改进使Python3更加优雅、简洁,同时也是对Python设计哲学的贯彻:There should be one-- and preferably only one --obvious way to do it.

#Python2x
>>> 10<>9
True
#Python3x
>>> 10<>9
  File "<stdin>", line 1
    10<>9
       ^
SyntaxError: invalid syntax

3. 赋值运算符

最简单的赋值运算符是=,例如 a = True。另外,前面的7个算术运算符,有7个对应的赋值运算符,它们是:+= -=*=/= , %=, **= , //=; 它们的效果相当于赋值语句。例如,a += 10 相当于 a = a + 10 。这两个代码运行结果相同,而且,print a+= 10会报错。所以,可以把它看成是赋值语句。

4. 逻辑运算符

Python有与、或、非三种逻辑运算,运算符分别是and, or ,not。一个有意思的情况是整数转布尔型。对于整数,除了取值为0取值为False,其余都为True。实例代码如下:

>>> a = 5;b = 6
>>> c = 0;d = 5
#如 a 为 False,返回 a 的值,否则它返回 b 的值,是个整数!
>>> a and b
6
>>> c and d
0
#如 a 是 True,返回 a 的值,否则它返回 b 的值。
>>> a or b
5
>>> c or d
5
>>> not a
False

5. 位运算符

位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下表:

运算符 描述
& 按位与运算符:参与运算的两个值,如两个相应位都为1,则该位结果为1,否则为0 。注意:不是“逻辑与”
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^ 按位异或运算符:当两对应的二进位相异时,结果为1
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

6. 成员运算符

Python的数据类型大体上可以分为两种,第一种就是之前介绍的整数、浮点数等,第二种可以看做是一种容器,比如set,tuple,list等等,容器中存储了若干个数据成员,后面章节会详细介绍。成员运算符用于查看一个数据成员是否在某个容器里:in , not in。其实我觉得,按照Python的设计哲学,成员运算符只要有一个in就可以了,not in可以不要。实例代码如下:

>>> list=[1,2,3]
>>> 1 in list
True
>>> 5 in list
False

8. 运算符优先级

从第一行向下,优先级由高到低;每一行上的优先级相同。

运算符 描述
**
~ + - 按位翻转, 一元加号和减号
* / % // 乘,除,取模和取整除
+ - 加,减
>> << 右移,左移
& 位 'AND'
^ | 位运算
<= < > >= 比较运算
<> == != 等于
= %= /= //= -= += *= **= 赋值运算
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符


思想果(www.sixiangguo.net)原创,作者:无梨教主。转载注明作者 和 本文链接: http://www.sixiangguo.net/archives/417.html

评论已关闭.