运算符
算术
c = a + b # 加
c = a - b # 减、或取负
c = a * b # 乘、或若干倍,如字符串,列表,元组。
c = a / b # 除以
# >>python 2.x
# 1 / 2 = 0
# 1.0 / 2 = 0.5
# >>python 3.x
# 1 / 2 = 0.5
c = a % b # 模除,(a % b) == a - (a//b)*b,恒成立
c = a ** b # a的b次方
c = a // b # 整除,向下取整,-10 / 3 = -4
关系
返回值0或1。
True = 1,False = 0。
a == b #是否相等
a != b #是否不相等
a <> b #同上,pyhon 3.x已经废弃。
a < b #小于
a > b #大于
a <= b #小于等于
b >= a #大于等于
a < b == c #等价于a < b && b == c
序列的比较
序列:字符串、列表、元组、字典、集合。
序列的比较和C++规则类似,字典序比较,递归子元素比较。
(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
逻辑
在python中,True = 1,False = 0。
#python的条件判断:
#0,'',(),[],{},None,set()为False,否则为True。
#a为True,意思是a的条件判断为True。
a and b #若a为True返回b,否则返回a
a or b #若a为True返回a,否则返回b
not a #a的条件判断取反
############短路运算符
#and和or也被称为短路运算符,从左往右进行分析,只要能确定True/False了,
#就停止分析,并返回最后分析到的值。
A and B and C #若A假,不会分析B、C,直接返回A
#若A真B假,不会分析C,直接返回B
A or B or C #若A真,不会分析B、C,直接返回A
#若A假B假,会分析C,最终返回C。
赋值
c = a + b #赋值
c += a #都和C/C++类似。
c -= 2
c *= a
c /= a
c %= a
c **= a
c //= a
位运算
a, b = 60, 13
#a : 0011 1100
#b : 0000 1101
a & b = 0000 1100 #“与”运算
a | b = 0011 1101 #“或”运算
a ^ b = 0011 0001 #“异或”运算
~a = 1100 0011 #“取反”运算
a >> 2= 0000 1111 #右移
a << 2= 1111 0000 #左移
成员运算
a in b #a是否在b序列里。
not in #与上相反
身份运算
a is b #a、b是否引用同一个对象。
is not #与上相反
a = 20
b = 20
a is b #true
a = []
b = []
a is b #false
优先级
指数最高。
一元 > 二元。
算术 > 关系 > 逻辑。
** 指数 (最高优先级)
#一元运算符##算术运算符
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
#二元运算符##
* / % // 乘,除,取模和取整除
+ - 加法减法
#二元运算符##位移运算、位运算
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
#二元运算符##关系运算符
<= < > >= 比较运算符
<> == != 等于运算符
#二元运算符##七七八八的运算
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
#二元运算符##逻辑运算符
not and or 逻辑运算符