文章目录
- 一、python运算符
- 二、运算符
- 1.算术运算符
- 1.1 加
- 1.2 减
- 1.3 乘
- 1.4 除
- 1.5 取模
- 1.6 幂
- 1.7 取整除
- 2.比较运算符
- 2.1 等于
- 2.2 不等于
- 2.3 大于
- 2.4 小于
- 2.5 大于等于
- 2.6 小于等于
- 3.赋值运算符
- 3.1 加法赋值运算符
- 3.2 减法赋值运算符
- 3.3 乘法赋值运算符
- 3.4 除法赋值运算符
- 3.5 取模赋值运算符
- 3.6 幂赋值运算符
- 3.7 取整除赋值运算符
- 3.8 海象运算符
- 4.逻辑运算符
- 4.1 与逻辑运算符
- 4.2 或逻辑运算符
- 4.3 非逻辑运算符
- 5.位运算符
- 5.1 按位与运算符
- 5.2 按位或运算符
- 5.3 按位异或运算符
- 5.4 按位取反运算符
- 5.5 左移动运算符
- 5.6 右移动运算符
- 6.成员运算符
- 6.1 in成员运算符
- 6.2 not in成员运算符
- 7.身份运算符
- 7.1 is身份运算符
- 7.2 is not身份运算符
- 三、总结
一、python运算符
Python的运算符是用于执行算术或逻辑计算的特殊符号。运算符所操作的值称为操作数。Python中的运算符大致可以分为以下几个大类:
- 算术运算符:用于执行基本的数学运算,如加法、减法、乘法、除法等。例如:+、-、*、/、%(取模)、**(幂运算)。
- 比较运算符:用于比较两个值或表达式的关系,并返回一个布尔值(True 或 False)。例如:==(等于)、!=(不等于)、>、<、>=、<=。
- 赋值运算符:用于给变量赋值。例如:=, +=(加等于)、-=(减等于)、*=(乘等于)、/=(除等于)。
- 逻辑运算符:用于组合多个条件,并根据这些条件的逻辑关系返回一个布尔值。例如:and(与)、or(或)、not(非)。
- 位运算符:用于对整数的二进制表示进行位级操作。例如:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)。
- 成员运算符:用于检查一个值是否属于一个序列或集合中。例如:in(存在于)、not in(不存在于)。
- 身份运算符:用于比较两个对象的身份(内存地址)是否相同。例如:is、is not。
二、运算符
1.算术运算符
运算符 | 描述 | 示例 |
---|---|---|
+ | 加 - 两个对象相加 | a+b |
- | 减 - 得到负数或是一个数减去另一个数 | a-b |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a*b |
/ | 除 - a 除以 b | a/b |
% | 取模 - 返回除法的余数 | a%b |
** | 幂 - 返回x的y次幂 | a**b |
// | 取整除 - 往小的方向取整数 | a//b |
注意事项:
- 整数除法:在 Python 中,使用 / 运算符进行除法运算时,得到的结果是浮点数。而在 C 语言中,如果两个整数相除,结果会被截断为整数。如果想在 Python 中执行整数除法,可以使用 // 运算符。
- 整数溢出:在 C 语言中,整数溢出的结果是未定义的。而在 Python 中,整数没有溢出问题,可以进行任意大的整数运算。
- 浮点数精度:在 C 语言中,浮点数的精度是有限的,并且在进行浮点数运算时可能存在舍入误差。而在 Python 中,浮点数的精度相对较高,可以进行精确的浮点数运算。
- 字符串拼接:在 C 语言中,字符串拼接需要使用库函数或手动操作字符数组。而在 Python 中,可以直接使用 + 运算符来拼接字符串。
- 幂运算:在 C 语言中,计算幂需要使用 pow() 函数。而在 Python 中,可以使用 ** 运算符进行幂运算。
- 取模运算:在 C 语言中,取模运算 % 的结果与被除数的符号相同。而在 Python 中,取模运算 % 的结果与除数的符号相同。
1.1 加
代码如下(示例):
a = 2.1
b = 1.0
c = 0c = a + b
print ("c 的值为:", c)
结果:
1.2 减
代码如下(示例):
a = 2.1
b = 1.0
c = 0c = a - b
print ("c 的值为:", c)
结果:
1.3 乘
代码如下(示例):
a = 1.0
b = 4.0
c = 0c = a * b
print ("c 的值为:", c)
结果:
1.4 除
代码如下(示例):
a = 1.0
b = 4.0
c = 0c = a / b
print ("c 的值为:", c)
结果:
1.5 取模
代码如下(示例):
a = 5.0
b = 3.0
c = 0c = a % b
print ("c 的值为:", c)
结果:
1.6 幂
代码如下(示例):
a = 2.0
b = 3.0
c = 0c = a ** b
print ("c 的值为:", c)
结果:
1.7 取整除
代码如下(示例):
a = 1.0
b = 4.0
c = 0c = a // b
print ("c 的值为:", c)
结果:可以发现和上面的除的结果有很大不一样。
2.比较运算符
运算符 | 描述 | 示例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) |
> | 大于 - 返回x是否大于y | (a > b) |
< | 小于 - 返回x是否小于y。 | (a < b) |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) |
注意事项:
- 所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
- 在 C 语言中,你需要使用逻辑运算符来连接多个比较表达式,例如,(a < b) && (b < c)。但是,a < b < c 是合法的 Python 表达式,表示 a 小于 b 并且 b 小于 c。
- Python3 已不支持 <> 运算符,可以使用 != 代替。
2.1 等于
代码如下(示例):
a = 1
b = 1if ( a == b ):print ("a 等于 b")
else:print ("a 不等于 b")
结果:
2.2 不等于
代码如下(示例):
a = 1
b = 4if ( a != b ):print ("a 不等于 b")
else:print ("a 等于 b")
结果:
2.3 大于
代码如下(示例):
a = 4
b = 1if ( a > b ):print ("a 大于 b")
else:print ("a 小于等于 b")
结果:
2.4 小于
代码如下(示例):
a = 1
b = 4if ( a < b ):print ("a 小于 b")
else:print ("a 大于等于 b")
结果:
2.5 大于等于
代码如下(示例):
a = 4
b = 1if ( a >= b ):print ("a 大于等于 b")
else:print ("a 小于 b")
结果:
2.6 小于等于
代码如下(示例):
a = 1
b = 4if ( a <= b ):print ("a 小于等于 b")
else:print ("a 大于 b")
结果:
3.赋值运算符
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
:= | 海象运算符 | 见下面 |
注意事项:
- 在 Python 中,你可以使用多重赋值语法来将多个变量赋值给多个值。例如,a, b = 10, 20 表示将 10 赋给变量 a,将 20 赋给变量 b。而在 C 语言中,你需要分别对每个变量进行赋值操作,例如,a = 10; b = 20;
- 在 Python 3.8 及更高版本中,引入了一种新的语法特性,称为"海象运算符"(Walrus Operator),它使用 := 符号。这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。
3.1 加法赋值运算符
代码如下(示例):
a = 2.1
b = 1.0b += a
print ("b 的值为:", b)
结果:
3.2 减法赋值运算符
代码如下(示例):
a = 2.1
b = 1.0b -= a
print ("b 的值为:", b)
结果:
3.3 乘法赋值运算符
代码如下(示例):
a = 2.1
b = 1.0b *= a
print ("b 的值为:", b)
结果:
3.4 除法赋值运算符
代码如下(示例):
a = 2.1
b = 1.0b /= a
print ("b 的值为:", b)
结果:
3.5 取模赋值运算符
代码如下(示例):
a = 2.1
b = 1.0b %= a
print ("b 的值为:", b)
结果:
3.6 幂赋值运算符
代码如下(示例):
a = 2.0
b = 2.1b **= a
print ("b 的值为:", b)
结果:
3.7 取整除赋值运算符
代码如下(示例):
a = 2.0
b = 2.1b //= a
print ("b 的值为:", b)
结果:
3.8 海象运算符
使用海象运算符可以在一些情况下简化代码,尤其是在需要在表达式中使用赋值结果的情况下。这对于简化循环条件或表达式中的重复计算很有用。
代码如下(示例):
# 传统写法
n = 10
if n > 5:print(n)# 使用海象运算符:= 允许我们在条件语句中同时计算并赋值 n * n,然后将结果用于比较
if (n := 10) > 5:print(n)
结果:
4.逻辑运算符
运算符 | 描述 | 示例 |
---|---|---|
and | 布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。 | (x and y) |
or | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | (x or y) |
not | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(x) |
注意事项:
Python 和 C 语言在逻辑运算符方面有一些不同。以下是它们之间的几个主要区别:
- 逻辑运算的返回值类型:在 C 语言中,逻辑运算的结果会被解释为整数类型(0 表示假,非零值表示真)。而在 Python 中,逻辑运算的结果会被解释为布尔类型(True 或 False)。
- 短路行为:在 C 语言中,逻辑运算符 && 和 || 具有短路行为。也就是说,如果表达式的结果已经能够确定整体的结果,那么后续的表达式不会被计算。而在 Python 中,逻辑运算符 and 和 or 也具有短路行为。如果第一个表达式已经决定了整体的结果,那么第二个表达式将不会被执行。
- 逻辑运算符的写法:在 C 语言中,逻辑与运算使用 &&,逻辑或运算使用 ||,逻辑非运算使用 !。而在 Python 中,逻辑与运算使用 and,逻辑或运算使用 or,逻辑非运算使用 not。
- 运算符的优先级和结合性:在C 语言中的逻辑运算符的优先级和结合性是固定的,可以使用括号来改变运算的顺序。而在Python 中的逻辑运算符有不同的优先级和结合性,可以使用括号来明确运算的顺序。
4.1 与逻辑运算符
代码如下(示例):
x = True
y = Trueif ( x and y ):print ("变量 x 和 y 都为 true")
else:print ("变量 x 和 y 至少有一个不为 true")x = True
y = Falseif ( x and y ):print ("变量 x 和 y 都为 true")
else:print ("变量 x 和 y 至少有一个不为 true")
结果:
4.2 或逻辑运算符
代码如下(示例):
x = True
y = Falseif ( x or y ):print ("变量 x 和 y 至少有一个为 true")
else:print ("变量 x 和 y 两个都为 false")x = False
y = Falseif ( x or y ):print ("变量 x 和 y 至少有一个为 true")
else:print ("变量 x 和 y 两个都为 false")
结果:
4.3 非逻辑运算符
代码如下(示例):
x = Falseif not( x ):print ("变量 x 为 false")
else:print ("变量 x 为 true") x = Trueif not( x ):print ("变量 x 为 false")
else:print ("变量 x 为 true")
结果:
5.位运算符
运算符 | 描述 | 示例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) |
I | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a I b) |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 | (~a ) |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 |
>> | 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 | a >> 2 |
注意事项:
Python 和 C 语言在位运算符方面有一些不同之处。以下是它们的主要区别:
- 位运算符的操作数类型:在 C 语言中,位运算符通常用于整数类型(如 int、unsigned int、char 等)。而在 Python 中,位运算符可以用于整数类型(如 int、bool)和布尔类型(True 和 False)。
- 位运算符的结果类型:在 C 语言中,位运算符的结果类型与其操作数类型相同。例如,对两个 int 类型的值进行位运算的结果也是 int 类型。而在 Python 中,位运算符的结果类型与其操作数类型无关。对两个整数进行位运算,结果仍然是整数。但是,对布尔类型进行位运算时,结果将变为整数类型。
- 负数的处理方式:在 C 语言中,对于带符号整数类型(如 int),位运算符会按照补码表示法进行计算。这意味着负数的二进制表示会影响位运算的结果。而在 Python 中,整数是动态的,没有固定的位数。Python 使用补码表示方式来处理位运算,但结果的位数取决于操作数的位数,并且不受符号位的影响。
- 移位运算符的行为:在 C 语言中,左移位运算符(<<)和右移位运算符(>>)会直接将二进制数向左或向右移动指定的位数,并且溢出的位将被丢弃。而在 Python 中,左移位运算符(<<)和右移位运算符(>>)的行为与 C 语言类似,但是 Python 没有固定的位数限制,移动的位数可以超过操作数的位数。
5.1 按位与运算符
代码如下(示例):
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0c = a & b # 12 = 0000 1100
print ("c 的值为:", c)
print("c 的二进制值为{:08b}".format(c)) # 转换为二进制
结果:
5.2 按位或运算符
代码如下(示例):
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0c = a | b # 61 = 0011 1101
print ("c 的值为:", c)
print("c 的二进制值为{:08b}".format(c)) # 转换为二进制
结果:
5.3 按位异或运算符
代码如下(示例):
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0c = a ^ b # 49 = 0011 0001
print ("c 的值为:", c)
print("c 的二进制值为{:08b}".format(c)) # 转换为二进制
结果:
5.4 按位取反运算符
代码如下(示例):
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0c = ~a # -61 = 1100 0011
print ("c 的值为:", c)
print("c 的二进制值为{:08b}".format(c)) # 转换为二进制
结果:
5.5 左移动运算符
代码如下(示例):
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0c = a << 2 # 240 = 1111 0000
print ("c 的值为:", c)
print("c 的二进制值为{:08b}".format(c)) # 转换为二进制
结果:
5.6 右移动运算符
代码如下(示例):
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0c = a >> 2 # 15 = 0000 1111
print ("c 的值为:", c)
print("c 的二进制值为{:08b}".format(c)) # 转换为二进制
结果:
6.成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,成员运算符 in 和 not in 可以应用于大多数容器类型,包括列表、元组、集合、字典和字符串等。
运算符 | 描述 | 示例 |
---|---|---|
in | in 运算符用于测试一个值是否为列表、元组、字符串等容器类型中的元素,如果是则返回 True,否则返回 False。 | ( a in list ) |
not in | not in 运算符则是 in 运算符的否定形式,如果一个值不是容器类型中的元素,则返回 True,否则返回 False。 | ( a not in list ) |
注意事项:
Python 中的成员运算符 in 和 not in 是 Python 语言独有的,C 语言中并没有这样的运算符。在 C 语言中,要判断一个值是否存在于数组或其他数据结构中,需要使用比较运算符或循环等语句来实现。
6.1 in成员运算符
代码如下(示例):
a = 5list = [1, 2, 3, 4, 5 ]if ( a in list ):print ("变量 a 在给定的列表中 list 中")
else:print ("变量 a 不在给定的列表中 list 中")
结果:
6.2 not in成员运算符
代码如下(示例):
a = 50list = [1, 2, 3, 4, 5 ]if ( a not in list ):print ("变量 a 不在给定的列表中 list 中")
else:print ("变量 a 在给定的列表中 list 中")
结果:
7.身份运算符
身份运算符用于比较两个对象的存储单元
运算符 | 描述 | 示例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象,如果引用的是同一个对象则返回 True,否则返回 False | x is y, 类似 id(x) == id(y) 。 |
is not | is not 是判断两个标识符是不是引用自不同对象,如果引用的不是同一个对象则返回结果 True,否则返回 False。 | x is not y , 类似 id(x) != id(y)。 |
注意事项:
C语言没有像Python那样的身份运算符。Python的身份运算符比较的是对象的身份(内存地址),而不是值。如果要比较对象的值是否相等,应该使用相等运算符==和!=。
对于C语言,可以通过比较指针来实现类似的功能。例如,可以使用==运算符比较两个指针的值是否相等,表示它们是否指向同一个内存地址。
7.1 is身份运算符
代码如下(示例):
x = [1, 2, 3]
y = [1, 2, 3]
z = xprint(x is y) # 输出 False,因为 x 和 y 引用了不同的内存地址
print(x is z) # 输出 True,因为 x 和 z 引用了同一个内存地址
结果:
7.2 is not身份运算符
代码如下(示例):
x = [1, 2, 3]
y = [1, 2, 3]print(x is not y) # 输出 True,因为 x 和 y 引用了不同的内存地址
结果:
三、总结
今天主要讲了Python的运算符,下一次说说运算符的优先级顺序。
感谢你的观看,谢谢!