【Python】运算符

Python运算符

2021/6/7 周一
学习内容: Python运算符

如有错误,欢迎在评论区指出,非常感谢!


Python运算符

主要是与Java的运算符对照学习(可参照我的博客 Java运算符(操作符)
),有些基础的就没展开了,一些详细使用可见 菜鸟教程w3school 网站。

一、算术运算符
  1. + 加
  2. - 减
  3. * 乘
  4. / 除,返回(即使能整除,结果也是浮点数)
  5. % 取模,返回余数
  6. ** 幂
  7. // 取整除,向下*接近商的整数(结果是整数)

与Java相比,Python少了++ 和 - - 自增自减运算符,多了 ** 幂运算

Java没有取商的运算符,Java的 / 就是Python的 // 整除

二、比较运算符(关系运算符)
  1. == 相等
  2. != 不相等
  3. > 大于
  4. < 小于
  5. >= 大于等于
  6. <= 小于等于

Python中的比较运算符基本与Java一样

三、位运算符

把参与运算的2个值以二进制位进行运算

  1. & 按位与 1&1=1; 1&0=0; 0&1=0; 0&0=0
  2. | 按位或 1|1=1; 1|0=1; 0|1=1; 0|0=0
  3. ^ 按位异或 1^1=0; 1^0=1; 0^1=1; 0^0=0
  4. ~ 按位取反 1个值运算 ~0=1; ~1=0
  5. << 左移动运算符 右边空出的位补0
  6. >> 右移动运算符 带符号右移,左边空出的补符号位

不同的是,Java的位运算还有>>>不带符号右移,Python没有不带符号右移

左移和右移举例:

>>> 左移
x = -3
i = 1
while i<7:
  x<<=1
  print(x)
  i += 1

>>> 输出:
>>> -6
>>> -12
>>> -24
>>> -48
>>> -96

''' 对应二进制位:
      原码     补码
-3  10000011 11111101
-6  10000110 11111010 左移并补0
-12 10001100 11110100
-24 10011000 11101000
-48 10110000 11010000
-96 11100000 10100000 
左移位运算相当于乘以2的n次幂
'''

>>> 右移
x = -61
i = 1
while i<8:
  x >>= 1
  print(x)
  i += 1

>>> 输出:
>>> -31
>>> -16
>>> -8
>>> -4
>>> -2
>>> -1
>>> -1

''' 对应二进制位:
      原码      补码
-61 10111101 11000011
-31 10011111 11100001 右移并补符号位,这里是复数所以补1
-16 10010000 11110000
-8  10001000 11111000
-4  10000100 11111100
-2  10000010 11111110
-1  10000001 11111111 
右移位运算相当于除以2的n次幂
'''

由于移位运算的速度很快,在程序中遇到表达式乘以或除以2的n次幂时,一般用移位运算符来代替。

四、赋值运算符
  1. = 简单的赋值运算符
  2. += 对应算数运算符,a+=1相当于a=a+1
  3. -=
  4. *=
  5. /=
  6. %=
  7. **= 幂赋值
  8. //= 取整除赋值
  9. &= 按位与赋值,对应位运算符
  10. |= 按位或赋值
  11. ^= 按位异或赋值
  12. >>= 向右位移赋值
  13. <<= 向左位移赋值

Python的赋值运算符比Java多很多,Java只有前6种,且根据算数运算符比较可知Java的 /= 与Python不同

五、逻辑运算符
  1. and 逻辑与,类似Java的&&,如果两个语句都为真,则返回 True。
  2. or 逻辑或,类似Java的||,如果其中一个语句为真,则返回 True。
  3. not 逻辑非,类似Java的!,取反。

Java中,逻辑运算符主要是用来求表达式的结果是True还是False。

在Python中,逻辑运算符除了可以用在表达式上,还可以直接用于变量的运算,比如:

a = 5
b = 10
print(a and b)
print(a or b)
>>> 10
>>> 5

a = 0
b = 10
print(a and b)
print(a or b)
>>> 0
>>> 10

print(not a)
print(not b)
>>> True
>>> False

总结:

  1. and 同真取最后一个真,有假取第一个假
  2. or 同假取最后一个假,有真取第一个真
  3. not 取反。

实际还是遵循上面类似Java的原则,只是因为用在表达式上时,真都是Ture,假都是False,所以不存在区分哪一个了。

而Python的布尔值不止用于表达式,用在数值、字符串等类型上,就能区分输出的是哪一个值。

六、成员运算符
  1. in 如果在指定的序列中找到值返回 True
  2. not in 如果在指定的序列中没有找到值返回 True

成员运算符就是在List、Tuple、Set、Dictionary中常用到的,检查是否存在指定元素关键字

mylist = [1,2,3,4,5]
print(1 in mylist)
print(2 not in mylist)

>>> 输出:
>>> True
>>> False

java没有成员运算符

七、身份运算符
  1. is 如果两个变量引用的是同一个对象,则返回 true
  2. is not 如果两个变量引用的不是同一个对象,则返回 true

java没有身份运算符

Python中 is 与 == 的区别:
is 用于判断两个变量引用对象是否为同一个== 用于判断引用变量的值是否相等

a = [1, 2, 3]

b = a #b引用了a
b == a
>>> True
b is a 
>>> True

b = a[:] #b从a中截取,b和a是元素相同的2个序列
b == a
>>> True
b is a
>>> False

这也类似Java中的 == 判断地址相等,equals() 判断值相等

八、运算符的优先级

具体见 菜鸟教程
Python运算符的优先级

在实际开发中尽量用( )括号来限定运算次序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值