当前位置:首页>python>Python入门第 4 课:运算符与优先级

Python入门第 4 课:运算符与优先级

  • 2026-10-10 18:51:36
Python入门第 4 课:运算符与优先级

不管你是刚入坑的小白,还是天天秃头写Bug的老司机,写代码本质上就是在做两件事:存数据 和 算数据。

今天,我们就来盘一盘Python里的“算数据”神器——运算符。别以为这只是加减乘除,Python里的运算符可是自带黑科技的!准备好你的护发素,我们发车了!

算术运算符

算术运算符大家小学就学过,+ - * / 闭着眼都会。但在Python里,有几个“偏门”兄弟你需要认识一下:

  • • %模运算(取余数):除不尽?剩下的归我!
  • • //整除(地板除):只要整数部分,小数统统砍掉!
  • • **幂运算:x**y 就是 x 的 y 次方。(注意:这不是打马赛克,是求算力!)
print(10 // 3)  # 输出: 3 (只要整数)print(10 % 3)   # 输出: 1 (取余数)print(2 ** 3)   # 输出: 8 (2的3次方)

比较运算符

写逻辑判断全靠它!返回值永远只有两个:True(真) 或 False(假)。

>, <, >=, <=, ==, !=

小白避坑指南:在Python里,一个等号 = 是用来赋值的,两个等号 == 才是用来判断相等的! 连写两个等号,才证明你真的在乎它俩平不平等!

赋值运算符

除了最基础的 =,Python还支持“偷懒写法”:

+=, -=, *=, /=, **=, //=, %=

x += 2 就等价于 x = x + 2。少敲几个键盘,多活几秒钟。

'''大家听过: 内存赋值,就是在内存中准备一个值, 然后让变量指向这地址。我们使用变量时,都是从内存取值    通过   id( var )  得到 var 的值所在的内存地址Python 命令行运行时有个 最小整数池 机制, -5 ~ 256。公用相同内存中的数,但是在 pycharm内,有个大正数池大概在2的64次方左右'''e = 12306f = 12306# pycharm 内 大整数内存 也一致,因为 做了优化,有个 大整数池print('e', id(e))print('f', id(f))

逻辑运算符

如果说比较运算符是词语,那逻辑运算符就是连词:

  • • and (与):渣男定律。两边都得是True,结果才是True。一个False,立马翻脸(False)。
  • • or (或):海王定律。只要有一个是True,结果就是True。多线操作,稳赚不赔。
  • • not (非):杠精定律。你说是True,他非说是False。唱反调第一名。
print( a>5 and b>10 )print( a>5 or b>10 and c>5 and d<1 ) # 可连写

成员运算符

想知道某个元素在不在列表、字符串或字典里?用 in 和 not in,一秒查户口!

word = '天王盖地虎,宝塔镇河妖'print('王' in word)  # True,天王也是王!# 字典的陷阱:字典只查键(Key),不查值(Value)!print('a' in {'a': 1, 'b': 2}) # Trueprint(1 in {'a': 1, 'b': 2})   # False

身份运算符

is 和 is not。有人问了:这跟 == 有啥区别?

  • • == 判断的是长得像不像(值是否相等)。
  • • is 判断的是是不是同一个人(内存地址 id 是否相同)。

双胞胎长得一样(== 为 True),但身份证号不同(is 为 False)!

aa = 10bb = 10list2 = [2,3,4,10]list3 = [2,3,4,10]print(aa is bb)print(list2 is list3)print( aa is list2[-1] ) # True# 一样的list4 = list2list4[0] = 200print( list4 is list2)print(list2)# 从 原数据内 copy 一份,就会是另一个内存list5 = list2.copy()print(list5)list5[-1] = 1000print(list5)print(list2)

位运算符

前方高能!这里会将数字变成二进制来计算。虽然平时写业务很少用,但遇到神仙代码时能看懂,装X必备!包含:& (与), | (或), ^ (异或), ~ (取反), << (左移), >> (右移)。

运算符
描述
&
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^
按位异或运算符:当两对应的二进位相异时,结果为1
~
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1
<<
左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
>>
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
'''----- 提一嘴 -----进制转换:  10 进制 变 其他进制bin( 十进制 )  会返回  '0b二进制'oct( 十进制 )  会返回  '0o八进制'hex( 十进制 )  会返回  '0x十六进制'进制转换:  其他进制 变 10 进制 int('其他进制的字符串', 原来是几进制 ) 返回 10进制数 ,默认10进制如:  int('11',16)  int('0x11',16)  0b  0o 0x 进制标识可以省略'''print(bin(60))print(int('11'))print(int('0b11',2))# 现在用 60 和 13 做按位运算# 要现有 60(111100)与 13 (1101)的二进制print(60 & 13)print(60 | 13)

下面的**”过于高端“,只举例两点:**

取反~

~ 在python中为反转的意思, 目前我知道的有两种用法.

# 一. 数值按位翻转# ~ x 就是 - x - 1x = 2print(~x)    # -3# 二. 布尔值取反# 在数据分析(Pandas)里,它经常客串 “布尔值反转”:# 想要删掉 DataFrame 里特定的几列?用 ~ 直接反选!# 翻译:留下那些 [不包含] 在 list1 里的列df = df[df.columns[~df.columns.isin(list1)]]

异或^

异或的性质

1、a ^ a=0 任何数字和自己异或结果是02、a ^ 0=a 任何数字和0异或还是他自己3、a ^ b = b ^ a 异或运算具有交换律4、a ^ (b ^ c) = (a ^ c) ^ b 异或运算具有结合律

# 示例1:值交换 # x=5 y=7将两个变量的值通过异或运算符进行交换x, y = 5, 7x = x ^ yy = x ^ yx = x ^ yprint(x, y)# 示例2:找出现一次的元素arr = [4, 1, 2, 1, 2]index = 0for i in arr:    index ^= iprint(index)

运算符优先级:

当一堆运算符混在一起,谁先算谁后算?这就是优先级。不用死记硬背,大致规律是:算术 > 位运算 > 比较 > 逻辑。

这里有一份完整的“阶级图”(数字越大优先级越高):

优先级
运算符
描述 (结合性)
19
( )
小括号 (绝对的王牌,想先算谁就括起来!)
18
x[i] 或 x[i1: i2 [:i3]]
索引 / 切片 (左)
17
x.attr
属性访问 (左)
16
**
乘方运算 (右)
15
~
按位取反 (右)
14
+, -
正负号 (右)
13
*, /, //, %
乘除取余 (左)
12
+, -
加减法 (左)
11
>>, <<
位移 (左)
10-8
&, ^, |
按位与/异或/或 (先&,再^,后|)
7
==, >, < 等
比较运算符 (左)
6
is, is not
身份运算符 (左)
5
in, not in
成员运算符 (左)
4-2
not, and, or
逻辑运算符 (左)
1
,
逗号运算符 (左)

最新文章

随机文章