【Python基础篇】你了解python中运算符吗

文章目录

  • [1. 算数运算符](#1. 算数运算符)
    • [1.1 //整除](#1.1 //整除)
    • [1.2 %取模](#1.2 %取模)
    • [1.3 **幂](#1.3 **幂)
  • [2. 赋值运算符](#2. 赋值运算符)
  • [3. 位运算符](#3. 位运算符)
    • [3.1 &(按位与)](#3.1 &(按位与))
    • [3.2 |(按位或)](#3.2 |(按位或))
    • [3.3 ^(按位异或)](#3.3 ^(按位异或))
    • [3.4 ~(按位取反)](#3.4 ~(按位取反))
    • [3.5 <<(左移)](#3.5 <<(左移))
    • [3.6 >>(右移)](#3.6 >>(右移))
  • [4. 比较运算符](#4. 比较运算符)
  • [5. 逻辑运算符](#5. 逻辑运算符)
    • [5.1 and](#5.1 and)
    • [5.2 or](#5.2 or)
    • [5.3 not](#5.3 not)
  • [6. 成员运算符](#6. 成员运算符)
    • [6.1 in](#6.1 in)
    • [6.2 not in](#6.2 not in)
  • [7. 身份运算符](#7. 身份运算符)

1. 算数运算符

算术运算符有:+、-、*、/、//、%、**,依次对应加、减

乘、除、整除、模、幂。

其中前四个就和数学中一样,我们来说一下后面三个。

1.1 //整除

//就和它的名一样,整除,就是运算后只会取整数部分。例如10除3它的结果就会等于3,舍去的余数部分。

代码:

python 复制代码
a = 10
b = 3
print(a // b)

运行结果:

1.2 %取模

%就是取模,就是取余的意思,和//对立,//只要整数部分,那%就是只要余数部分。例如:10%3结果就是1。

python 复制代码
a = 10
b = 3
print(a % b)

1.3 **幂

** 就是幂的意思。例如:2 ** 3就相当于2的3次方,结果为8,2 ** 4就相当于2的4次方,结果为16。

python 复制代码
a = 2
b = 4
print(a ** b)

2. 赋值运算符

赋值运算符有:=、+=、-=、*=、/=、//=、%=,首先等=就是等号的意思,而后面的加等,减等......用起来其实都是一样的,这里演示一个大家应该就懂了。

代码演示:

python 复制代码
a = 1
print(a)
a += 2  # 相当于a = a + 2,原本的a等于1,现在加上2,那么就等于3了
print(a)  # 打印结果为3

后面的-=、*=、/=、//=、%=的应用和+=规则相同。

3. 位运算符

位运算符有:&、|、^、~、<<、>>, 依次是按位与、按位或、按位异或、按位取反、左移、右移。

位运算符用于对整数的二进制表示进行直接操作,就是运算时不是直接对变量进行运算,而是先转换为二进制,对二进制整数操作。

3.1 &(按位与)

对每一位执行逻辑与操作。如果两个相应的二进制位都为1,则该位的结果为1;否则为0。

python 复制代码
a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a & b  # 0000 1100  
print(c)  # 输出: 12

3.2 |(按位或)

对每一位执行逻辑或操作。如果两个相应的二进制位中至少有一个为1,则该位的结果为1;否则为0。

python 复制代码
a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a | b  # 0011 1101  
print(c)  # 输出: 61

3.3 ^(按位异或)

对每一位执行逻辑异或操作。如果两个相应的二进制位不相同,则该位的结果为1;如果相同,则为0。

python 复制代码
a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a ^ b  # 0011 0001  
print(c)  # 输出: 49

3.4 ~(按位取反)

对数的二进制表示进行取反操作。即将0变为1,将1变为0。需要注意的是,取反后的结果通常是补码形式表示的负数(对于有符号整数而言),这取决于具体的位数和系统架构。

python 复制代码
a = 60  # 0011 1100  
b = ~a  # 1100 0011...(取决于整数类型,这里假设是32位)  
# 注意:直接打印b会得到一个负数,因为Python使用补码表示负数  
print(b)  # 输出: -61(假设是32位系统)

3.5 <<(左移)

数的各二进制位全部左移若干位,由右侧的数指定移动的位数,高位丢弃,低位补0。

python 复制代码
a = 60  # 0011 1100  
b = a << 2  # 0011 1100 -> 1111 0000  
print(b)  # 输出: 240

3.6 >>(右移)

数的各二进制位全部右移若干位,由右侧的数指定移动的位数。对于无符号数,高位补0;对于有符号数,则取决于具体的系统,可能是补0或补1(即算术右移)。Python中的整数是有符号的,但右移操作在Python 3.x中总是用0来填充高位。

python 复制代码
a = 60  # 0011 1100  
b = a >> 2  # 0011 1100 -> 0000 1111  
print(b)  # 输出: 15

4. 比较运算符

比较运算符有:==、!=、<、>、<=、>=, ==就是数学中=的意思,但是并不能直接写=,前面我们也知道了=是赋值的意思,!=就是不等于的意思,后面相信就不用介绍了。

python 复制代码
print(1 == 1)  # 正确的,结果true
print(1 != 1)  # 错误的,结果false

5. 逻辑运算符

逻辑运算符有:and、or、not三种,依次是逻辑与运算符、逻辑或运算符、逻辑非运算符,使用起来就和数学中的与或非一样。

5.1 and

逻辑与运算符。如果它的两个操作数都是真(True),则整个表达式的结果为真(True)。如果任一操作数为假(False),则结果为假(False)。

python 复制代码
print(True and True)  # 输出: True  
print(True and False) # 输出: False  
print(False and True) # 输出: False  
print(False and False) # 输出: False

5.2 or

逻辑或运算符。如果它的两个操作数中至少有一个为真(True),则整个表达式的结果为真(True)。如果两个操作数都是假的(False),则结果为假(False)。

python 复制代码
print(True or True)  # 输出: True  
print(True or False) # 输出: True  
print(False or True) # 输出: True  
print(False or False) # 输出: False

5.3 not

逻辑非运算符。用于反转其操作数的布尔值。如果操作数是真(True),则结果为假(False)。如果操作数是假(False),则结果为真(True)。

python 复制代码
print(not True)  # 输出: False  
print(not False) # 输出: True

6. 成员运算符

成员运算符有:in、not in两种。用于检查某个值是否存在于某个集合中(比如列表、元组、字符串、集合或字典的键中)。

集合后面会讲,这里就简单使用一样,懂in和not in什么意思就可以。

6.1 in

如果指定的值在指定的序列中(或作为字典的键),则返回True;否则返回False。

python 复制代码
# 列表  
my_list = [1, 2, 3, 4, 5]  
print(3 in my_list)  # 输出: True  
print(6 in my_list)  # 输出: False  
 
# 字符串  
my_str = "hello"  
print('e' in my_str)  # 输出: True  
print('z' in my_str)  # 输出: False  
 
# 字典(检查键)  
my_dict = {'a': 1, 'b': 2, 'c': 3}  
print('a' in my_dict)  # 输出: True  
print('d' in my_dict)  # 输出: False

6.2 not in

这个运算符是in的否定形式。如果指定的值不在指定的序列中(或不是字典的键),则返回True;否则返回False。

python 复制代码
# 列表  
my_list = [1, 2, 3, 4, 5]  
print(6 not in my_list)  # 输出: True  
print(3 not in my_list)  # 输出: False  
 
# 字符串  
my_str = "hello"  
print('e' not in my_str)  # 输出: False  
print('z' not in my_str)  # 输出: True  
 
# 字典(检查键)  
my_dict = {'a': 1, 'b': 2, 'c': 3}  
print('a' not in my_dict)  # 输出: False  
print('d' not in my_dict)  # 输出: True

7. 身份运算符

身份运算符 :is、is not 用于测试两个对象是否相同(即,它们是否指向同一个对象或内存地址)。对象内存地址这个概念后面讲,大家是不是觉得好多后面讲,这也是没办法的嘛,先简单后难,这些难点的后面会详解的,大家不用担心,不会影响前面的学习的。

python 复制代码
a = [1, 2, 3]  
b = a  
c = [1, 2, 3]  
  
print(a is b)  # 输出: True,因为 a 和 b 指向同一个列表对象  
print(a is c)  # 输出: False,因为虽然 a 和 c 的内容相同,但它们是不同的对象  
print(a == c)  # 输出: True,因为 a 和 c 的内容相同  
  
x = 256  
y = 256  
z = id(x)  
w = id(y)  
  
print(x is y)  # 输出可能取决于Python实现和对象类型,但对于小整数(如-5到256之间的整数),Python通常会缓存这些值,因此这里很可能输出 True  
print(z == w)  # 输出: True,因为id()函数返回对象的唯一标识符(内存地址),这里x和y指向同一个对象  
  
# 示例使用 is not  
print(a is not b)  # 输出: False,因为a和b是同一个对象  
print(a is not c)  # 输出: True,因为a和c不是同一个对象
相关推荐
奋斗的小花生41 分钟前
c++ 多态性
开发语言·c++
魔道不误砍柴功43 分钟前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
闲晨1 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
_.Switch1 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
老猿讲编程1 小时前
一个例子来说明Ada语言的实时性支持
开发语言·ada
Chrikk2 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*2 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue2 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man2 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉