运算符
算术运算符
算术运算符的优先级和数学是一样的,当不清楚顺序时可添加圆括号来加深顺序。
python3除法有余数,python2取整
python 3
>>> 3/6
0.5
>>> 3//6 #双除线即为取整除
0
>>> 4/2
2.0
python 2
>>> 3/6
0
>>> float(3) / 6 #两边改其中之一为浮点数即为自然除
0.5
- + 加
- - 减
- * 乘
- / 除
- // 取整
- % 取模 分布式常用
- ** 次方
比较运算符
- == 相等
- != 不等
- > 大于
- >= 大于等于
- < 小于
- <= 小于等于
>>> 1 == '1'
False
>>> 1 != '1'
True
>>> 1 < '1'
TypeError: unorderable types: int() < str()
除了 == 和 != 最好类型相同
赋值运算符
- = :赋值
- += :加法赋值运算
- -= :减法赋值运算
- *= :乘法赋值运算
- /= :除法赋值运算
- %= :取模赋值运算
- **= :幂赋值运算
- //= :取整除赋值运算
>>> a = 3
>>> a += 3 #等于 a = a + 3
>>> print(a)
6
>>> a -= 4 #等于 a = a - 4
>>> print(a)
2
逻辑运算符
参与运算的只能是bool类型,或隐式转化为bool类型的类型
- and #与,两边都是True,结果才为True
- or #或,两边运算符任意一边为True,结果就是True
- not #非,单目运算符
短路运算:总是从左到右的计算,一旦能决定表达式最终的值,将立刻停止计算并返回
>>> def add(x,y):
print("{0} + {1}".fornat(x,y))
return x + y
>>> add(1,3)
1 + 3
4
>>> add(1,3) > add(1,2) and add(1,2) > add(1,1)
1 + 3
1 + 2
1 + 2
1 + 1
True
>>> add(1,3) < add(1,2) and add(1,2) > add(1,1)
1 + 3
1 + 2
False
此时左侧的值为Fasle就能算出整个算术的结果,此时右边都无需计算了
位运算符
a=60
b=12
符号 | 描述 | 实例 |
---|---|---|
& | 按位与 | a&b=12 |
| | 按位或 | a|b=60 |
^ | 按位异或 | a^b=48 |
~ | 按位取反 | ~a=-61 |
<< | 左移位运算符,左移几位就在尾部增加几个0 | 60<<2 得240 |
|右移位运算符,右移超出范围则删除|60>>2 得15
与、或、异都是转换成二进制(0x开头,bin函数)在进行操作,而按位取反是十六进制(0x开头,hex函数),(八进制Oo开头,oct函数)
>>>bin(60)
'0b111100'
>>>bin(12)
'0b1100'
>>> 60 & 12
0011 1100
0000 1100
0000 1100 #两者为1才得1
>>> 60 | 12
0011 1100
0000 1100
0011 1100 #有1个存在即得1
>>> 60 ^ 12
0011 1100
0000 1100
0011 0000 #不同时为1
>>> ~60
-61 #非的算法公式:-(x+1)
位移:
>>> 60 >> 2 #60往右移两位
0011 1100
0000 1111 = 15
>>> 60 << 2 #60左移两位
0011 1100
1111 0000 = 240
成员运算符
- in :如果在指定的序列中找到值返回True,否则返回False
- not in :如果在指定的序列中没有找到值返回True,否则返回False
>>> list1=[1,2,3]
>>> 1 in list1
True
>>> 4 not in list1
True
身份运算符
身份运算符用于比较两个对象的存储单元
- is :判断两个标识符是不是引用自一个对象,类似于id(x) == id(y)
- is not :判断两个标识符是不是引用自不同对象,类似于id(x) != id(y)
注:id()
函数用于获取对象内存地址。
>>> a = b = 10
>>> id(a) == id(b)
True
>>> b = 11;id(a) == id(b)
False
>>> a is b
False
>>> id(a)
9169856
>>> id(b)
9169856
is 与 == 的区别:
is 用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等
>>>a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a # b = a是将b指向a的内存地址
True
>>> b = a[:] #这里重新给b赋值一个新的内存地址
>>> b is a
False
>>> b == a
True