目录
前言
在编程的世界里,运算符是构建程序逻辑和算法的基础工具。Python作为一种通用、易学的编程语言,提供了丰富的运算符来支持各种操作。无论是进行基本的数学计算,还是进行复杂的逻辑判断,Python的运算符都能为我们提供强大的支持。
本文旨在系统介绍Python中的各类运算符,帮助大家理解和掌握它们的用法。我们将从基本的算术运算符开始,逐步介绍比较运算符、赋值运算符、逻辑运算符、成员运算符、身份运算符、位运算符,其中位运算符作为了解,感兴趣的可以自行再进行学习。同时,我们也会详细解释运算符的优先级和结合性,以确保大家能够编写出正确、高效的代码。
一、算数运算符
算数运算符,主要用来进行计算,例如:+加 ,-减 ,*乘, /除(浮点数除法) , %取模(取余) , //整数除法(向下取整) , **幂运算(指数)
1.加减乘除 + - * /
num1 = 10
num2 = 5
print(num1 + num2)
print(num1 - num2)
print(num1 * num2)
print(num1 / num2) # 2.0 除法运算,保留小数
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
15
5
50
2.0
2.取模(求余数)%
num1 = 10
num3 = 3
print(num1 % num3)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
1
# 10除以3,余数为1,取余数1
3.整除 //
num1 = 10
num3 = 3
print(num1 // num3)
>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
3
# 10除以3,结果3.333333333.... 取整数为3
4.幂(次方) **
num1 = 10
num3 = 3
print(num1 ** num3)
>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
1000
# 10的3次方,结果为1000
5.特殊场景使用
计算的数据非纯数字 -- 一半是数字,一半不是;加法可以连接多个字符串的内容,乘法可以连续多次输出字符串内容;注意:不同的数据类型是无法进行计算的
# 拼接在一起
str1 = "hello"
str2 = "world"
print(str1 + str2)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
helloworld
# 相乘,多次输出
str1 = "hello"
num4 = 3
# print(str1 + num4) # 字符串和数字不能相加
print(str1 * num4) # 相乘,多次输出,次数由后面的数字来决定的
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
hellohellohello
# 其他多种类型运算
data = 3
f2 = 2.111
print(data + f2) # 5.111000000000001 -- 原因:由于python的底层代码的问题导致的 -- 精准度丢失
bol = True # 非0则为True,True在做计算的时候为:1
print(data + bol) # 可以相加的,得到的结果:4
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
5.111000000000001
4
二、关系运算符(比较运算)
比较运算符,一般用于判断、循环。例如:>大于,<小于,==等于,!=不等于,>=大于等于,<=小于等于,比较运算符返回的结果是bool值: True、False;关系运算符==等于,!=不等于同样适用于两个字符串是否相同
1.数字比较
a = 10
b = 5
print(a > b)
print(a < b)
print(a == b) # 判断是否等于
print(a != b) # 不等于
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
True
False
False
True
2.字符串比较
str1 = False
str2 = 0
str3 = "关系运算"
str4 = "关系运算符"
print(str1 == str2)
print(str3 == str4)
>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
True
False
三、赋值运算符
赋值运算,用于给变量赋值,例如:=赋值,+=加法赋值(例如,a += b 相当于 a = a + b),-=减法赋值,*=乘法赋值,/=除法赋值,//=整数除法赋值 ,%=取模赋值,**=幂赋值
"""
把右边的值赋值给左边的变量
"""
a = 10
b = 5
# a += 5 # a = a + 5 简写
# print(a) # 15
# a -= 5 # a = a - 5
# print(a) # 5,涉及到除法运算的结果,都是float
# a *= 5 # a = a * 5
# print(a) # 50
# a /= 5 # a = a / 5
# print(a) # 2.0
# a //= 5 # a = a // 5
# print(a) # 2
# a %= 5 # a = a % 5
# print(a) # 0
# a **= 5 # a = a ** 5
# print(a) # 100000
四、逻辑运算符
逻辑运算,一般用于判断,循环。例如:and与 , or或 , not非;
逻辑运算符返回的结果是布尔值:True或者False;
逻辑运算符内部三个优先级: not > and > or;
与运算:所有的逻辑都是True,那么最终的结果才是True -- and
同真为真,有假为假
或运算:只要有一个逻辑是True,那么最终的结果就是True -- or
同假为假,有真为真
非运算:杠精 -- 不管别人是对的,还是错的,他一定是持反对意见 -- not
1.布尔值逻辑运算
a = True # 用1表示
b = False # 用0表示
"""
布尔值逻辑运算:
"""
print(a and b)
print(a or b)
print(not b)
>>>>>>>>>>>>>>>>>>>>>
输出结果:
False
True
True
2.数字逻辑运算
# 优先级:比较运算符 > 逻辑运算符
print(1 > 2 and 4 > 3)
print(1 > 2 or 4 > 3)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
False
True
3.逻辑运算优先级
# 优先级: not > and > or
print(2>1 and 3>4 or 1>0 and not 4>5)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
True
# 优先级: 算数 > 比较 > 逻辑
print(1 + 1 > 1 + 2 and 3 + 2 < 3 - 1 or 5 and not True) # False
print(2 > 3 and 5 < 2 or 5 and not True)
print(False and False or 5 and not True)
print(False and False or 5 and False)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
False
False
False
False
五、成员运算符
成员运算符返还的结果是布尔值:True 或者False
![](https://img-blog.csdnimg.cn/direct/bf977df67ad24e09bc2cb72ea54051f3.jpeg)
str1 = "hello python"
print("py" not in str1)
print("py" in str1)
print(" " in str1)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
False
True
True
# 数字是一个整体,是无法去判断包含或者不包含;bool也不行
六、身份运算符
身份运算,用于比较两个对象的身份,即比较它们是否是内存中的同一个对象。例如:is检查两个对象的标识是否相同(即它们是否指向内存中的同一个位置),is not检查两个对象的标识是否不同;这与==
和!=
不同,后者比较的是两个对象的值是否相等
1.比较两个变量是否引用同一个对象
list1 = [1, 2, 3]
list2 = list1
list3 = [1, 2, 3]
# 使用is运算符检查list1和list2是否引用同一个对象
print(list1 is list2)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
True
# 使用is运算符检查list1和list3是否引用同一个对象
print(list1 is list3)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
False
# 使用is not运算符检查list1和list3是否不是同一个对象
print(list1 is not list3)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
True
2.比较整数和字符串(小整数对象池)
Python为了性能优化,对于小的整数(在-5到256之间,这个范围可能因Python实现而异)会缓存这些整数的对象。这意味着当创建这些范围内的整数时,实际上是在引用同一个对象。
# 比较小整数
a = 100
b = 100
# 使用is运算符检查a和b是否引用同一个对象
print(a is b)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
True (因为a和b都是小整数)
# 比较大整数,它们不会被缓存
c = 10000
d = 10000
# 使用is运算符检查c和d是否引用同一个对象
print(c is d)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
False (因为c和d不是小整数)
# 字符串总是新的对象,即使它们的内容相同
e = "hello"
f = "hello"
# 使用is运算符检查e和f是否引用同一个对象(在某些Python实现中,如CPython,字符串是interned的)
print(e is f)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
True (在CPython中,相同内容的字符串字面量是同一个对象)
# 使用字符串方法创建新的字符串对象
g = "hello".upper()
# 使用is运算符检查e和g是否引用同一个对象
print(e is g)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
e is g: False (因为g是通过方法创建的新对象)
七、运算符优先级
算数优先级优先级大于比较运算符,比较运算符优先级大于逻辑运算符,逻辑运算符内部三个优先级 not > and > or
所有的运算符都有一个优先级需要遵循,优先级从高到低依次如下图表示
总结
在本文中,我们探讨了Python中的各种运算符,包括算术运算符、比较运算符、逻辑运算符、成员运算符以及赋值运算符等。这些运算符不仅丰富了Python的语法,也极大地增强了其编程的灵活性和表达力。通过学习和掌握这些运算符,我们能够更加高效地编写Python代码,实现复杂的逻辑和计算任务。