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

目录

算术运算符

1. 四则运算

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

2. 整除

python 复制代码
# 向下取整
print(11//2, 11//-2)
python 复制代码
5 -6

3. 取模

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

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

python 复制代码
# a % b = a-b*(a//b)
print(9 % 4, 9 % -4, -9 % 4)
python 复制代码
1 -3 3

4. 求幂

python 复制代码
print(2**3, 3**2)
python 复制代码
8 9

赋值运算符

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

1. 链式赋值

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

python 复制代码
a = b = c = 0

2. 参数赋值

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

python 复制代码
a = 7
a **= 2
print(a)
python 复制代码
49

3. 系列解包赋值

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

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

关系运算符

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

python 复制代码
print(1 < 2, 1.0 > 2, True <= 2, 1 >= True+1, 1 == 2, 1 != 2)
python 复制代码
True False True False False True

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

身份运算符

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

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

数据类型均为数值布尔 时,value相同则id相同;

数据类型均为序列 时,即使value相同,id也不同,因为创建序列时,是先开辟专有空间,再存入元素,即序列的值

数值序列id一定不同,即使序列中的元素就是参与比较的数值,因为序列分配的空间是专有的,而相同的数值存储于相同地址

python 复制代码
# 创建列表(又称数组,属于可变序列,后续会介绍的一种数据类型)
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)
python 复制代码
True False False
True False False

严格意义上,上述的 序列 拓展到 组合 时,仍然适用,并且布尔数值 之间也有 valueid不同 的规律。

可以回顾Python基础学习笔记(三)------变量_数据类型关于数据类型的分类的解释,这里不再展开。

成员运算符

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

python 复制代码
print(2 in [0, 2], '0' not in '02')
python 复制代码
True False

逻辑运算符

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

python 复制代码
# 与:当且仅当两值均为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])
python 复制代码
False
False
False

位运算符

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

1. 按位运算

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

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

2. 移位运算

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

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

优先级

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

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

相关推荐
数据智能老司机2 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机3 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机3 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机3 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i3 小时前
drf初步梳理
python·django
每日AI新事件3 小时前
python的异步函数
python
使一颗心免于哀伤3 小时前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
这里有鱼汤4 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook14 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室14 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python