运算符

算术运算符

算术运算符的优先级和数学是一样的,当不清楚顺序时可添加圆括号来加深顺序。

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
posted @ 2018-07-29 21:39  dance_man  阅读(166)  评论(0编辑  收藏  举报