Python 的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比拟、逻辑和其余类型的运算。咱们所熟知的加减乘除也是运算符中的一种。Python 提供了多种类型的运算符,有算术运算符,比拟运算符,赋值运算符,逻辑运算符,位算符等等。
算术运算符
算术运算符是 Python 中比较简单的运算符,咱们小学所学习的加减乘除也是算术运算符中的一部分,用于执行数学运算,具体有以下算术运算符。
1、加法运算符(+):将两个操作数相加。
a = 10
b = 5
c = a + b
print(c) # 输入:15
2、减法运算符(-):从第一个操作数中减去第二个操作数。
a = 10
b = 5
c = a - b
print(c) # 输入:5
3、乘法运算符(*):将两个操作数相乘。
a = 10
b = 5
c = a * b
print(c) # 输入:50
4、除法运算符(/):将第一个操作数除以第二个操作数,后果为浮点数。
a = 10
b = 5
c = a / b
print(c) # 输入:2.0
5、取余运算符(%):返回第一个操作数除以第二个操作数的余数。
a = 10
b = 3
c = a % b
print(c) # 输入:1
6、幂运算符(**):将第一个操作数作为底数,第二个操作数作为指数进行幂运算。
a = 2
b = 3
c = a ** b
print(c) # 输入:8
7、整除运算符(//):将第一个操作数除以第二个操作数并向下取整。
a = 10
b = 3
c = a // b
print(c) # 输入:3
算术运算符总的来说还是比较简单的,然而有些状况还是须要留神。比方有些浮点数相加,后果并不一定是你认为的后果,像 0.1+0.2
后果就是 0.30000000000000004
,0.1*0.2
后果就是 0.020000000000000004
,0.3-0.2
后果就是 0.09999999999999998
,
很违反直觉,然而的确是这样的,这个波及到计算机用二进制示意小数的精度问题。
还有就是浮点数和整数进行算术运算符,后果应该也是浮点数。
比拟运算符
Python 的比拟运算符用于比拟两个值之间的关系,返回布尔值(True 或 False),咱们小学所学的大于小于就是比拟运算符,具体有以下比拟运算符。
1、等于运算符(==):用于查看两个操作数是否相等。
2、不等于运算符(!=):用于查看两个操作数是否不相等。
3、大于运算符(>):用于查看第一个操作数是否大于第二个操作数。
4、小于运算符(<):用于查看第一个操作数是否小于第二个操作数。
5、大于等于运算符(>=):用于查看第一个操作数是否大于或等于第二个操作数。
6、小于等于运算符(<=):用于查看第一个操作数是否小于或等于第二个操作数。
a = 5
b = 10
print(a == b) # 输入:False
print(a != b) # 输入:True
print(a > b) # 输入:True
print(a < b) # 输入:True
print(a >= b) # 输入:False
print(a <= b) # 输入:True
赋值运算符
Python 的赋值运算符用于将值赋给变量,就是将右边的值赋值给左边,赋值运算符中最重要的符号就是=
,而后在联合其余的加减乘除能够扩大出其余的赋值运算符,以下是 Python 的赋值运算符。
1、等号运算符(=):将左边的值赋给右边的变量。
2、加等于运算符(+=):将左边的加到右边的变量上,并将后果赋给右边的变量。
3、减等于运算符(-=):将左边的值从右边的变量中减去,并将后果赋给右边的变量。
4、乘等于运算符(*=):将左边的值乘以右边的变量,并将后果赋给右边的变量。
5、除等于运算符(/=):将右边的变量除以左边的值,并将后果赋给右边的变量。
6、取模等于运算符(%=):将右边的变量对左边的值取模,并将后果赋给右边的变量。
大家须要留神的是,这里的赋值运算符可能与数学上的运算符有点出入,然而实际上是一样的,这里将加减乘除 +-*/
写在等号的右边,其实是和惯例了解的写法是一样的,比方,a += 3
就是 a = a + 3
,记住这就是一样的。
a = 10
a %= 3
print(a) # 输入:1
b = 2
b *= 3
print(b) # 输入:6
逻辑运算符
编程中逻辑运算与数学中的逻辑运算是一样的,Python 的逻辑运算符用于在布尔值之间进行逻辑运算,返回布尔值后果(True 或 False)。
逻辑运算类型
1、逻辑与运算符(and):当所有操作数都为 True 时,后果为 True;只有有一方为 False,那么后果为 False。
x = 5
y = 10
z = (x < 10 and y > 5)
print(z) # 输入:True
w = (x > 10 and y > 5)
print(w) # False
2、逻辑或运算符(or):当有一个操作数为 True 时,那么后果为 True;只有所有的操作数为 False,那么后果为 False。
x = 5
y = 10
z = (x < 10 or y < 5)
print(z) # 输入:True
w = (x > 10 or y < 5)
print(w) # False
3、逻辑非运算符(not):当操作数为 True 时,后果为 False;当操作数为 False 时,后果为 True。
x = 5
y = 10
z = not(x < 10 and y > 5)
print(z) # 输入:False
逻辑运算实质
逻辑运算符返回的后果个别都是布尔值,但并不是说相对都是返回布尔值的。比方以下状况就不输入 True 或者 False 了。
x = 5
y = 10
z = (x and y)
print(z) # 输入:10
w = (x or y)
print(w) # 输入:5
在 Pyhon 当中,任何非 0 或非空对象都被视为 True,像大于 0 或者小于 0 的数,都是被视为 True。而整数 0,浮点数 0,空字符串,空列表,空元组等等,都被视为 False。但同时须要明确,这个并不是说 2 == True
的后果就是为 True。在布尔值中,True 是 1,False 是 0。
另外须要留神的是,逻运算符是短路运算符,即在计算表达式期间,如果曾经确定后果,就不再计算剩下表达式。
例如,在应用与运算符(and)时,第一个操作数为 False,那么第二个操作数将不会被计算,因为无论第二个操作数是什么,都不会影响最初的后果了,并且输入第一个操作数的值。如果第一个操作数是 True,那么就会持续计算第二个操作数的值,并把第二个操作数的值作为后果输入。
同样地,应用或算符(or)时,如果第一个操作数为 True,那第二个操作数将不会被计算,因为无论第二个操作数是什么,都不会影响最初的后果了,并且输入第一个操作数的值。如果第一个操作数是 False,那么就会持续计算第二个操作数的值,并把第二个操作数的值作为后果输入。
大家能够联合一下下面的论断和例子来了解,并且本人能够入手实际起来。
位运算符
位运算符在数学中并不常见,所以可能很多初学编程的敌人不大了解。位运算符用于对整数进行位级操作,也就是将一个整数转化成二进制数,而后两个二进制数进行的各种操作,位运算符个别常见与底层操作相干的。
1、按位与(&):对两个操作数的每个位执行与操作,如果两个对应的位都是 1,则后果为 1,有任何一个方为 0,后果就为 0。和逻辑与运算有点像。
a = 5 # 二进制示意为 0101
b = 3 # 二进制示意为 0011
result = a & b # 二进制示意为 0001
print(result) # 输入:1
在上述示例中,按位与运算符 (&) 对变量 a 和 b 进行位运算。后果是将 a 和 b 的对应位进行与操作,失去的二进制数为 0001,转换成十进制为 1。
2、按位或(|):对两个操作数的每个位执行或操作,如果两个对应的位有一个 1,则后果为 1,只有两个对应的位为 0,后果才为 0。和逻辑或运算有点像。
a = 5 # 二进制示意为 0101
b = 3 # 二进制示意为 0011
result = a | b # 二进制示意为 0111
print(result) # 输入:7
在上述示例中,按位或运算符 (|) 对变量 a 和 b 进行位运算。后果是将 a 和 b 的对应位进行或操作,失去的二进制数为 0111,转换成十进制为 7。
3、按位异或(^):对两个操作数的每个位执行异或操作,如果两个对应的位不雷同,则后果为 1,否则为 0。也就是两个对应的位都是 1 或者都是 0,那么后果为 0,只有不雷同,就是 1。
a = 5 # 二进制示意为 0101
b = 3 # 二进制示意为 0011
result = a ^ b
print(result) # 输入:6
在上述示例中,按位异或运算符 (^) 对变量 a 和 b 进行位运算。后果是将 a 和 b 的对应位进行异或操作,失去的二进制数为 0110,转换成十进制为 6。
4、按位取反(\~):对操作数的每个位执行取反操作,将 1 变为 0,将 0 变为 1。
a = 5 # 二进制示意为 0101
result = ~a
print(result) # 输入:-6
这里须要留神的是,咱们在之前按位与或者按位或中,是为了书写不便,实际上 5 和 3 在 32 位机器上的内存里的示意是这样的。
5 - 0000 0000 0000 0000 0000 0000 0000 0101
3 - 0000 0000 0000 0000 0000 0000 0000 0001
因为下面的计算中,并不需要后面那么多位,所以咱们就只写前面几个,然而按位取反就须要残缺的示意进去,对 5 按位取反就是上面这个
1111 1111 1111 1111 1111 1111 1111 1010
这个在内存当中是个 -6,至于为什么,大家也不必管,有趣味的能够去查找相干材料来理解,正数的补码示意形式,本文就不探讨这个问题。
5、按位左移(<<):将操作数的所有位向左挪动指定的位数。
a = 5 # 二进制示意 0101
result = a << 2
print(result) #:20
在述示例中,按位左移运算符 (<<) 将变量 a 的所有位向左移 2 位。后果是将 a 的二进制数 0101 左移 2 位,失去的二进制数为 10100,转换成十进制为 20。
6、按位右移(>>):将一个操作数的所有位向右挪动指定位数。
a = 5 # 二进制示意为 0101
result = a >> 1
print(result) # 输入:2
在述示例中,按位右运算符 (>>) 将变量 a 的所有位向右挪动 1 位。后果是将 a 的二进制数 0101 右移 1 位,失去的二进制数为 0010,转换成十进制为 2。
这些位运算符能够用于对整数进行位级操作。通过应用这些运算符,你能够在位级上解决二进制数据,提取或操作其中的位,满足特定需要。请留神,位运算符仅实用于整数类型。
更多精彩内容,请关注同名公众:一点 sir(alittle-sir)