Python基础学习笔记(四)——运算符

一、算术运算符

1. 四则运算

# 加减乘除:除法结果为浮点数
print(1+2, 1-2, 1*2, 2/1)
3 -1 2 2.0


2. 整除

# 向下取整
print(11//2, 11//-2)
5 -6


3. 取模

  对于含有负数的取模运算,有以下规律:余数与除数的符号相同,余数的绝对值小于除数的绝对值。可以先取绝对值作取模运算,若结果不满足上述,则加上除数的整数倍,直至相符。

  也可以套用公式:余数=被除数-除数*整除商

# a % b = a-b*(a//b)
print(9 % 4, 9 % -4, -9 % 4)
1 -3 3


4. 求幂

print(2**3, 3**2)
8 9


二、赋值运算符

  右边的值赋给左边的变量,运算符为=.

1. 链式赋值

  链式赋值定义的变量共用一个内存地址,即不同的变量名指向的内存空间相同。

a = b = c = 0


2. 参数赋值

  参数赋值的运算符的组成为:算术运算符 + =,即左边变量的值与右边的值作对应数值运算后,再把结果赋给变量

a = 7
a **= 2
print(a)
49


3. 系列解包赋值

  = 两侧的变量和值用逗号隔开,从左到右依次对应赋值变量和值的数量必须相同,否则无法解包并报错,但左侧可存在相同变量

# 系列解包赋值
a, b, c = 1, 2, 3
print(a, b, c)
# 交换变量值
a, b = b, a
print(a, b, c)
1 2 3
2 1 3


三、关系运算符

  关系运算符用于比较value)的关系,运算结果均为bool类型。关系运算符有<, >, <=, >=, ==, !=(不等于)。数值型和布尔型数据的值可以相互比较,组合类型的值的比较有更复杂的规则。

print(1 < 2, 1.0 > 2, True <= 2, 1 >= True+1, 1 == 2, 1 != 2)
True False True False False True

  条件语句的判断条件经常使用到该运算符,需要注意区分===的功能差别,不要混淆。

四、身份运算符

  身份运算符可以比较变量的标识identification)的关系,运算结果均为bool类型。身份运算符有is, is not(不等于)。用于判断两个标识符(变量名、常量名)是否指向同一内存地址。

  (以下为拓展内容,不懂可跳)

  数据类型均为数值布尔时,value相同则id相同;
  数据类型均为组合时,即使value相同,id也不同,因为创建组合时,是先开辟专有空间,再存入元素,即组合的值
  数值组合id一定不同,即使组合中的元素就是参与比较的数值,因为组合分配的空间是专有的,而相同的数值存储于相同地址

# 创建列表(又称数组,属于可变序列,后续会介绍的一种数据类型)
list1, list2 = [1], [1]
a = 1 
print(list1 == list2, list1 is list2, [2] is [2])
print(a is 1, 1 is list1, True is 1)
True False False
True False False

  特别的,由于后续会介绍的字符驻留机制,上述的组合中不包括字符串,并且布尔数值之间也有 valueid不同 的规律。
  可以回顾Python基础学习笔记(三)——变量_数据类型关于数据类型的分类的解释,这里不再展开。

五、成员运算符

  成员运算符可以判断元素是否在指定组合中,运算结果均为bool类型。成员运算符有in, not in参与比较的元素必须是可以存入参与比较的组合的。

print(2 in [0, 2], '0' not in '02')
True False


六、逻辑运算符

  逻辑运算符用于bool 类型数据间的逻辑运算,运算结果均为bool类型。逻辑运算符有and(与), or(或), not(非)

# 与:当且仅当两值均为True时,返回值为True
print(1 < 2 and 1.0 > 2)
# 或:当且仅当两值均为False时,返回值为False
print([2] is [2] or True is 1)
# 非:对bool取反
print(not 2 in [0, 2])
False
False
False


七、位运算符

  位运算符是将int, bool转为二进制进行计算,运算结果均为int类型。位运算符有&(按位与), |(按位或), ^(按位异或), ~(按位取反), <<(左移位), >>(右移位)

1. 按位运算

  有两个操作数,属于双运算符

# 十进制转为二进制后,两数位数对齐,相应位做逻辑运算,得到结果位的值
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a  = 1100 0011
# 异或:两位不同,结果为1;两位相同,结果为0
print(35 ^ 28)
# 输出结果为十进制整数
63

2. 移位运算

  只有一个操作数,属于单运算符,移位方向跟名字一致。

# 二进位全部移动若干位,溢位舍去,缺位补零
a = 0011 1100
b = 0000 1101
-----------------
a>>3 = 0000 0111
b<<5 = 1010 0000
# 右移位:a>>b = a//2**b
print(35 >> 2, 35//2**2)
# 左移位:a<<b = a*2**b
print(12 << 3, 12*2**3)
8 8
96 96


八、优先级

运算符描述
**指数(最高)
~ + -单运算符(按位翻转,一元加号和减号)
* / // %乘除
+ -加减
>> <<移位
&
^ |(异)或
<= < > >=比较
== !=等于
= %= /= //= -= += *= **=赋值
is, is not身份
in, not in成员
not, and, or逻辑

  一元加号和减号的应用比较简单,这里提一下,常见于Pyhon中的正数和负数的格式,如+1, -1,一般来说一元加号很少用到。

  • 37
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值