运算符的优先级:+-优先级最低,*,/,//,%优先级较高,单目运算符+-优先级更高,乘方的优先级最高

环境说明

环境:
   python 2.7
   centos 7.5

1
2
3
>>> print -2 * 4 + 3 ** 2
1
>>>

算数运算

  • 字符串之间使用加号(+)可以做字符串拼接
  • 只要除数或被除数中有一个数是浮点数,那么得到的结果也是浮点数
运算符描述示例
+两个对象相加>>>print ‘abc’+’def’
abcdef
>>>print 123+234
357
>>>
-两个对象相减>>>print 123-456
-333
>>>
*两个数相乘或返回一个重复若干次的序列>>>print 123*456
56088
>>>print ‘abc’*2
abcabc
>>>
/两个数相除>>>print 2/3
0
>>>print 2/3.0
0.666666666667
>>>print 2.0/3
0.666666666667
>>>
//整除,返回商的整数部分>>>print 3//2
1
>>>print 3//2.0
1.0
>>>
%求余/取模,返回除法的余数>>>print 4%3
1
>>>print 4%3.0
1.0
>>>print 4%2.0
0.0
>>>print 4%2
0
>>>
**求幂/次方>>>print 2**3
8
>>>print 2**3.0
8.0
>>>

赋值运算

运算符描述实例示例
=简单赋值运算符a = 5,b = 3,c = a - b>>>a = 5
>>>b = 3
>>>c = a - b
>>>print ‘c的值为:’,c
c的值为:2
>>>
+=加法赋值运算符a+= b 相当于 a = a+b>>>a = 5
>>>b = 3
>>>a+= b
>>>print ‘a的值为:’,a
a的值为:8
>>>
-=减法赋值运算符a -= b 相当于 a = a -b>>>a = 5
>>>b = 3
>>>a -= b
>>>print ‘a的值为:’,a
a的值为:2
>>>
*=乘法赋值运算符a *= b 相当于 a = ab>>>a = 5
>>>b = 3
>>>a *= b
>>>print ‘a的值为:’,a
a的值为:15
>>>
/=除法赋值运算符a /= b 相当于 a = a / b>>>a = 5
>>>b = 3
>>>a /= b
>>>print ‘a的值为:’,a
a的值为:1
>>>
//=取整除赋值运算符a //= b 相当于 a = a // b>>>a = 5
>>>b = 3
>>>a //= b
>>>print ‘a的值为:’,a
a的值为:1
>>>
%=取模赋值运算符a %= b 相当于 a = a % b>>>a = 5
>>>b = 3
>>>a %= b
>>>print ‘a的值为:’,a
a的值为:2
>>>
**=幂赋值运算符符a **= b 相当于 a = a^b>>>a = 5
>>>b = 3
>>>a **= b
>>>print ‘a的值为:’,a
a的值为:125
>>>

python 不支持C语言中的自增1和自减1运算符,因为+-也是单目运算,python会将--n解释为-(-n)从而得到n,同样,++n的结果也是n。

比较运算

运算符描述示例
<小于,比较运算符返回1表示真,返回0表示假。
这分别与特殊的变量True和False等价
>>>a=21
>>>b=10
>>>a>b
True
>>>
<=小于或等于>>>a=21
>>>b=31
>>>a<=b
True
>>>
>大于>>>a=21
>>>b=31
>>>a>b
False
>>>
>=大于或等于>>>a=31
>>>b=21
>>>a>=b
True
>>>
==等于>>>a=31
>>>b=21
>>>a==b
False
>>>
!=不等于>>>a=31
>>>b=21
>>>a!=b
True
>>>
is判断两个标识符是否引用自一个对象>>>x = [4,5,6]
>>>y = [7,8,9]
>>>x is y
False
>>>
is not判断两个标识符是否引用自不同对象>>>x = [4,5,6]
>>>y = [7,8,9]
>>>x is not y
True
>>>

逻辑运算

“真”值测试(Truth Value Testing)

Python中的任何一个对象都可以被测试“真”值。可以这样理解:Python中的任何一个对象都可以转换为一个布尔值,而这个“真”值测试就是获取一个对象对应的布尔值的过程。
Python中只有下面这些值对应的布尔值为False:

  • None
  • False
  • 数字类型中的0,如:0,0.0,0j
  • 任意空序列,如:'',(),[]
  • 任意一个空映射,如:{}
  • 一个用户自定义类的实例。该用户自定义类中定义了一个__bool__()__len__()方法,且实例调用该方法时返回整数0或布尔值False

除此之外,所有的其它值对应的布尔值都是True, 因此许多类型的对象永远是True。”真”值测试可以被用在 if或while条件中,也可以作为布尔操作的操作数。

布尔运算(Boolean Operations)

Python中的逻辑运算称为“布尔运算(Boolean Operations)”,操作符包括:and(与)、or(或)、not(非)。

运算符逻辑表达式描述示例
andx and y与运算,只有两个布尔值都为 True 时,计算结果才为 True>>>x = True
>>>y = False
>>>x and y
False
>>>
orx or y或运算,只要有一个布尔值为 True,计算结果就是 True>>>x = True
>>>y = False
>>>x or y
True
>>>
notnot x非运算,把True变为False,或者把False变为True>>>x = True
>>>not x
False
>>>

位运算

按位运算是指把数字转换为二进制来进行计算。

1
2
3
#左边为十进制,右边为二进制
600011 1100
130000 1101

运算符描述实例示例
&按位与,参与运算的两个值。
如果相应的二进制位都为1,则该位结果为1,否则为0
a&b对应的二进制结果为 0000 1100,十进制为12>>>a=60
>>>b=13
>>>c=a & b
>>>print c
12
>>>
|按位或运算符,
只要对应的二个二进位有一个为1时,结果位就为1
(a|b)输出结果61,
二进制解释: 0011 1101
>>>a=60
>>>b=13
>>>c=a|b
>>>print c
61
>>>
^按位异或运算符,
当两对应的二进位相异时,结果为1
(a^b)输出结果49,
二进制解释: 0011 0001
>>>a=60
>>>b=13
>>>c=a^b
>>>print c
49
>>>
~按位取反运算符,对数据的每个二进制位取反,
即把1变为0,把0变为1。~x 类似于-x-1
(~a)输出结果-61,
二进制解释:1100 0011,
在一个有符号二进制数的补码形式
>>>a=60
>>>b=~a
>>>print b
-61
>>>
<<左移动运算符,运算数的各二进位全部左移若干位,
由 << 右边的数字指定了移动的位数,高位丢弃,低位补0
a << 2输出结果240,
二进制解释: 1111 0000
>>>a=60
>>>b=a<<2< br="">>>>print b
240
>>>
>>右移动运算符,
把”>>”左边的运算数的各二进位全部右移若干位,
>>右边的数字指定了移动的位数
a>>2输出结果15,
二进制解释:0000 1111
>>>a=60
>>>b=a>>2
>>>print b
15
>>>

Python成员运算符

运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False x 在 y 序列中 , 如果 x 在 y 序列中返回 True
not in 如果在指定的序列中没有找到值返回 True,否则返回 False x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/python
#-*- coding: UTF-8 -*-
a=10
b=20
list=[1,2,3,4,5]
if a in list:
print '变量 a 在给定的列表中 list 中'
else:
print '变量 a 不在给定的列表中 list 中'
if b not in list:
print '变量 b 不在给定的列表中 list 中'
else:
print '变量 b 在给定的列表中 list 中'
1
2
3
4
# python in.py
变量 a 不在给定的列表中 list 中
变量 b 不在给定的列表中 list 中
#

Python运算符优先级

运算符 描述
** 指数(最高优先级)
~,+,- 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
*,/,%,// 乘,除,取模和取整除
+,- 加法减法
>>,<< 右移,左移运算符
& 位’AND’
^ 位运算符
<=,<,>,>= 比较运算符
<>,==,!= 等于运算符
=,%=,/=,//=,-=,+=,*=,**= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

单目运算符

指运算所需变量为一个的运算符,又叫一元运算符,其中有:

  • 逻辑非运算符:!
  • 按位取反运算符:~
  • 自增自减运算符:++,
  • 负号运算符:-
  • 类型转换运算符:(类型)
  • 指针运算符和取地址运算符:*,&
  • 长度运算符:sizeof

双目运算符

指对两个变量进行操作

  • 初等运算符
    • 下标运算符:[]
    • 分量运算符:->(向结构体成员运算符)
    • 结构体成员运算符:_
  • 算术运算符
    • 乘法运算符:*
    • 除法运算符:/
    • 取余运算符:%
    • 加法运算符:+
    • 减法运算符:-
  • 关系运算符
    • 等于运算符:==
    • 不等于运算符:!=
    • 关系运算符:<,>,<=,>=
  • 逻辑运算符
    • 逻辑与运算符:&&
    • 逻辑或运算符:||
    • 逻辑非运算符:!
  • 位运算符
    • 按位与运算符:&
    • 按位异或运算符:^
    • 按位或运算符:|
    • 左移动运算符:<<
    • 右移动运算符:>>
  • 赋值运算符
    • 简单赋值运算符:=
    • 加法赋值运算符:+=
    • 减法赋值运算符:-=
    • 乘法赋值运算符:*=
    • 除法赋值运算符:/=
    • 取模赋值运算符:%=
    • 左移动运算符:>>=(对变量进行位运算移位之后的结果再赋值给原来的变量)
    • 右移动运算符:<<=(同上)
    • 实现按位与运算符:&=a = iand(a, b) is equivalent to a &= b 参考参考
    • 实现按位或赋值运算符:|=a|=2等价于a=a|2()a = ior(a, b) is equivalent to a |= b。参考同上
    • 按位异或赋值运算符:^=a = ixor(a, b) is equivalent to a ^= b。参考同上
  • 逗号运算符:,

三目运算符

三目运算符对三个变量进行操作,指的是计算机c语言的重要组成部分。条件运算符是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。


本文出自”Jack Wang Blog”:http://www.yfshare.vip/2018/08/04/Python运算符/