本文主要介绍python的运算符。什么是运算符,举个简单的例子予以说明:4+5=9。例子中4和5被称为操作数,“+”则称为运算符。python语言支持以下类型的运算符:
一、算数运算符
算术运算符用于执行基本算术运算,如加、减、乘、除和取余数等。
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法:对两个数值相加或者连接两个字符串 | 2 + 3 = 5 |
- | 减法:从第一个数值中减去第二个数值 | 3 - 2 = 1 |
* | 乘法:两个数值相乘或重复字符串 | 2 * 3 = 6 |
/ | 除法:将第一个数值除以第二个数值,返回一个浮点数 | 3 / 2 = 1.5 |
% | 取模:返回第一个数值除以第二个数值的余数 | 7 % 2 = 1 |
** | 幂运算:返回第一个数值的第二个数值次幂 | 2 ** 3 = 8 |
// | 整除:返回第一个数值除以第二个数值的整数部分(向下取整) | 7 // 2 = 3 |
下面是一些示例:
a = 10
b = 3
# 加法运算符
print(a + b) # 输出 13
# 减法运算符
print(a - b) # 输出 7
# 乘法运算符
print(a * b) # 输出 30
# 除法运算符
print(a / b) # 输出 3.3333333333333335
# 取模运算符
print(a % b) # 输出 1
# 幂运算符
print(a ** b) # 输出 1000
# 整除运算符
print(a // b) # 输出 3
此外,算术运算符还可以用于字符串的拼接:
str1 = 'Hello, '
str2 = 'world!'
print(str1 + str2) # 输出 'Hello, world!'
需要注意的是,当算术运算符应用于不同类型的对象时,Python会自动进行类型转换。例如,在整数和浮点数之间执行算术运算时,整数会被自动转换为浮点数。
二、比较(关系)运算符
Python中的比较运算符用于比较两个值的大小关系,并返回布尔值True或False。下面是Python支持的比较运算符:
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个值是否相等 | 2 == 3,返回False |
!= | 检查两个值是否不相等 | 2 != 3,返回True |
> | 检查第一个值是否大于第二个值 | 2 > 3,返回False |
< | 检查第一个值是否小于第二个值 | 2 < 3,返回True |
>= | 检查第一个值是否大于或等于第二个值 | 2 >= 3,返回False |
<= | 检查第一个值是否小于或等于第二个值 | 2 <= 3,返回True |
下面是一些示例:
a = 10
b = 5
# 相等比较
print(a == b) # 输出 False
# 不相等比较
print(a != b) # 输出 True
# 大于比较
print(a > b) # 输出 True
# 小于比较
print(a < b) # 输出 False
# 大于等于比较
print(a >= b) # 输出 True
# 小于等于比较
print(a <= b) # 输出 False
比较运算符还可以用于字符串的比较:
str1 = 'abc'
str2 = 'def'
print(str1 == str2) # 输出 False
print(str1 < str2) # 输出 True
print(str1 > str2) # 输出 False
需要注意的是,比较运算符只能用于相同类型的对象之间进行比较。如果比较的对象类型不同,则Python会自动进行类型转换。例如,当字符串和数字进行比较时,Python会将字符串转换为数字,然后再进行比较。此外,在Python中,空列表、空字符串和空字典等对象被视为False,非空对象被视为True。
三、赋值运算符
Python的赋值运算符用于将值赋给变量。赋值运算符的基本形式是将一个值赋给一个变量,例如 x = 5
。在Python中,有多种赋值运算符,如下所示:
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算符 | x = 5 |
+= | 加法赋值运算符 | x += 5 等价于 x = x + 5 |
-= | 减法赋值运算符 | x -= 5 等价于 x = x - 5 |
*= | 乘法赋值运算符 | x *= 5 等价于 x = x * 5 |
/= | 除法赋值运算符 | x /= 5 等价于 x = x / 5 |
%= | 取模赋值运算符 | x %= 5 等价于 x = x % 5 |
//= | 取整除赋值运算符 | x //= 5 等价于 x = x // 5 |
**= | 幂赋值运算符 | x **= 5 等价于 x = x ** 5 |
&= | 按位与赋值运算符 | x &= 5 等价于 x = x & 5 |
|= | 按位或赋值运算符 | x |= 5 等价于 x = x | 5 |
^= | 按位异或赋值运算符 | x ^= 5 等价于 x = x ^ 5 |
>>= | 右移赋值运算符 | x >>= 5 等价于 x = x >> 5 |
<<= | 左移赋值运算符 | x <<= 5 等价于 x = x << 5 |
下面是一些示例:
# 简单的赋值运算符
x = 5
print(x) # 输出 5
# 加法赋值运算符
x += 3
print(x) # 输出 8
# 减法赋值运算符
x -= 2
print(x) # 输出 6
# 乘法赋值运算符
x *= 4
print(x) # 输出 24
# 除法赋值运算符
x /= 3
print(x) # 输出 8.0
# 取模赋值运算符
x %= 5
print(x) # 输出 3.0
# 幂赋值运算符
x **= 2
print(x) # 输出 9.0
# 按位与赋值运算符
x = 15 # 二进制表示为 1111
x &= 7 # 二进制表示为 0111
print(x) # 输出 7,即二进制表示为 011
四、逻辑运算符
Python的逻辑运算符用于对布尔值进行操作,通常用于控制程序流程。Python中有三种逻辑运算符:and、or和not。
- and运算符:当两个操作数都为True时,结果为True,否则结果为False。
- or运算符:当两个操作数中有一个为True时,结果为True,否则结果为False。
- not运算符:对操作数进行取反操作,如果操作数为True,则结果为False,如果操作数为False,则结果为True。
下面是一些示例:
# and运算符
x = 5
y = 10
z = 15
if x < y and x < z:
print("x is the smallest number.")
# 输出:x is the smallest number.
# or运算符
x = "apple"
y = "banana"
z = "cherry"
if x == "banana" or x == "cherry":
print("x is not my favorite fruit.")
else:
print("x is my favorite fruit.")
# 输出:x is my favorite fruit.
# not运算符
x = True
if not x:
print("x is False.")
else:
print("x is True.")
# 输出:x is True.
注意:逻辑运算符只能用于布尔值,但在Python中,除了布尔值之外,任何值都可以用作逻辑表达式。在这种情况下,Python会将非零值视为True,零值视为False。例如:
x = 5
y = 0
if x and y:
print("Both x and y are True.")
else:
print("At least one of x and y is False.")
# 输出:At least one of x and y is False.
在上面的示例中,x是一个非零值,因此它被视为True。y是零值,因此它被视为False。由于y是False,所以条件表达式的值为False,执行else语句块。
五、位运算符
Python中的位运算符用于操作二进制数值。这些运算符将数值转换为二进制数,然后对二进制数进行位操作。Python中的位运算符包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。
下面是位运算符的详细介绍和示例:
(1)按位与(&):将两个操作数的每一位进行与运算,只有在两个位都为1时,结果才为1。
a = 10 # 二进制 1010
b = 7 # 二进制 0111
print(a & b) # 输出:2(二进制 0010)
(2)按位或(|):将两个操作数的每一位进行或运算,只有在两个位都为0时,结果才为0。
a = 10 # 二进制 1010
b = 7 # 二进制 0111
print(a | b) # 输出:15(二进制 1111)
(3)按位异或(^):将两个操作数的每一位进行异或运算,只有在两个位不同时,结果才为1。
a = 10 # 二进制 1010
b = 7 # 二进制 0111
print(a ^ b) # 输出:13(二进制 1101)
(4)按位取反(~):将一个操作数的每一位进行取反操作,0变为1,1变为0。
a = 10 # 二进制 1010
print(~a) # 输出:-11
(5)左移(<<):将一个操作数的所有位向左移动指定的位数,右侧用0填充。
a = 10 # 二进制 1010
print(a << 2) # 输出:40(二进制 101000)
(6)右移(>>):将一个操作数的所有位向右移动指定的位数,左侧用0或者符号位填充,取决于数值是否为负数。
a = 10 # 二进制 1010
print(a >> 2) # 输出:2(二进制 0010)
需要注意的是,位运算符一般用于底层编程,例如在编写驱动程序或编写加密算法时。在普通的应用程序开发中,位运算符用得比较少。
六、成员运算符
Python中的成员运算符用于判断一个值是否存在于序列(列表、元组、集合、字典等)中。Python中的成员运算符包括in和not in。
下面是成员运算符的详细介绍和示例:
(1)in运算符:用于检查一个值是否存在于序列中,如果存在,则返回True;否则返回False。
lst = [1, 2, 3, 4, 5]
print(3 in lst) # 输出:True
print(6 in lst) # 输出:False
(2)not in运算符:用于检查一个值是否不存在于序列中,如果不存在,则返回True;否则返回False。
lst = [1, 2, 3, 4, 5]
print(3 not in lst) # 输出:False
print(6 not in lst) # 输出:True
成员运算符在判断一个值是否存在于序列中时非常有用。例如,可以使用成员运算符在列表中查找某个元素,或者在字符串中查找某个子串。
七、身份运算符
Python中的身份运算符用于比较两个对象的内存地址是否相同,即比较它们是否引用同一个对象。Python中的身份运算符包括is和is not。
下面是身份运算符的详细介绍和示例:
(1)is运算符:用于比较两个对象的内存地址是否相同,如果相同,则返回True;否则返回False。
x = [1, 2, 3]
y = [1, 2, 3]
z = x
print(x is y) # 输出:False
print(x is z) # 输出:True
(2)is not运算符:用于比较两个对象的内存地址是否不相同,如果不相同,则返回True;否则返回False。
x = [1, 2, 3]
y = [1, 2, 3]
z = x
print(x is not y) # 输出:True
print(x is not z) # 输出:False
身份运算符在比较对象时非常有用。例如,可以使用身份运算符比较两个变量是否引用同一个对象,或者在函数中比较两个参数是否是同一个对象。需要注意的是,身份运算符比较的是对象的内存地址,而不是对象的值。因此,对于不可变对象(如数字、字符串、元组等),它们的值相同时,它们的内存地址也相同。
八、运算符优先级
Python中的运算符优先级指的是运算符之间的执行顺序,不同的运算符具有不同的优先级,优先级高的运算符先执行。如果不确定优先级,可以使用括号来明确运算顺序。
下面是Python中常见运算符的优先级从高到低的顺序:
运算符 | 描述 |
---|---|
** | 幂运算 |
~ + - | 按位取反、正号、负号 |
* / % // | 乘法、除法、取模、整除 |
+ - | 加法、减法 |
>> << | 右移、左移 |
& | 按位与 |
^ | | 按位异或、按位或 |
<= < > >= | 小于等于、小于、大于、大于等于 |
== != | 等于、不等于 |
= %= /= //= -= += *= **= | 赋值、复合赋值 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
下面是一些运算符优先级的示例:
x = 2
y = 3
z = 4
result = x + y * z # 先执行乘法,再执行加法
print(result) # 输出:14
result = (x + y) * z # 先执行括号内的加法,再执行乘法
print(result) # 输出:20
result = x == y or z < y # 先执行比较运算符,再执行逻辑运算符
print(result) # 输出:False
result = not x is y # 先执行身份运算符,再执行逻辑运算符
print(result) # 输出:True
需要注意的是,如果不确定运算符的优先级,最好使用括号来明确运算顺序,以避免出现意想不到的错误。