3.3 Python运算符
运算符用于执行程序代码运算,根据操作数一般分为一元运算符、二元运算符。例如:2+3
,其操作数是2
和3
,而运算符则是+
。在Python中运算符可以分为以下几种类型:算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
3.3.1 算术运算符
+
、-
、*
:分别对应数学中的加减乘,在此不做过多的赘述。/
:除法,注意结果返回的是浮点数。4 / 2 → 2.0%
:取模,返回除法的余数。7 % 3 → 1**
:幂运算。4 ** 2 → 16//
:取整除,也叫地板除,返回商的整数部分(向下取整)。15 // 6 → 2
1、算术运算符全是对数值类型数据进行操作的运算符
2、算术运算符全是二元运算符
3、返回的类型为数值类型
算术转换规则
1、如果任一操作数为复数,另一操作数会被转换为复数;
2、否则,如果任一操作数为浮点数,另一操作数会被转换为浮点数;
3、否则,两者应该都为整数,不需要进行转换。
3.3.2 比较(关系)运算符
==
、!=
、>
、<
、>=
、<=
:分别对应等于、不等于、大于、小于、大于或等于、小于或等于。
1、比较(关系)运算符可以操作数值类型,也可以操作对象。
2、比较(关系)运算符全是二元运算符。
3、返回的结果为布尔类型
(非真即假)
3.3.3 赋值运算符
=
:最常用的赋值运算符。a = 5 → 将5赋值给a。算术运算符
+ =
:先进行算术运算之后再进行赋值。例如:a += 3
等价于:a = a + 3。其它的类似。=:
:海象运算符。Python3.8之后新增的一种赋值运算符,可以直接进行赋值后再形成表达式,从而节省代码的编写量。
↓未使用海象运算符
age = 20
if age > 18:
print("已经成年了")
↓使用海象运算符
if(age:= 20) > 18:
print("已经成年了")
↓未使用海象运算符
file = open("demo.txt", "r")
while True:
line = file.readline()
if not line:
break
print(line.strip())
↓使用海象运算符
file = open("demo.txt", "r")
while (line := file.readline()):
print(line.strip())
↓未使用海象运算符
while True:
p = input("Enter the password: ")
if p == "youpassword":
break
↓使用海象运算符
while(p := input("Enter the password: ")) != "youpassword":
continue
1、赋值运算符可以操作数值类型,也可以操作对象。
2、赋值运算符全是二元运算符。
3.3.4 逻辑运算符
and
:逻辑与,若2个操作数都为真则结果为True
,否则为False
。or
:逻辑或,若2个操作数都为假则结果为False
,否则为True
。not
:逻辑非,取反。若操作数为True
,则结果为False
。反之亦然。
1、操作数必须为布尔类型
或能隐式转换成布尔类型
。
2、and
、or
是两元运算符,而not
是一元运算符。
3、and
其实短路逻辑
,就是先判断第1个参数的布尔类型,如果是False
,那么整个表达式就是False
,而不必去判断第2个参数的布尔类型。如果为True
,那么整个表达式的最后结果就是第2个参数的布尔类型。这个称之为短路逻辑。or
也同理。
4、优先级:not
> and
> or
5、返回的类型为布尔类型
3.3.5 位运算符
位运算符会将数字转换成二进制并进行运算。位运算符将两个二进制数位从高到低依次进行运算。为了方便讲解,下面的变量a 为 60,b 为 13,a和b的二进制格式为:
a = 0011 1100
b = 0000 1101&
:按位与,如果参与运算的两个2进制位都为1,则结果为1,否则为0。
a & b → 0000 1100|
:按位或,如果参与运算的两个2进制位有一个为1,则结果为1。否则为0。
a & b → 0011 1101^
:按位异,如果参与运算的两个2进制位相异时,结果为1。否则为0。
a ^ b → 0011 0001~
:按位取反,对数据的每个二进制位取反,即把1变为0,把0变为1。
~a = 1100 0011<<
:左移动,运算数的各二进位全部左移若干位,由 <<
右边的数字指定了移动的位数,高位丢弃,低位补0。
a << 2 → 1111 0000>>
:右移动,运算数的各二进位全部右移若干位,由 >>
右边的数字指定了移动的位数,低位丢弃,高位补0。
a >> 2 → 0000 1111
1、操作数必须为整数类型
2、&
、|
、^
是两元运算符,而~
、<<
、>>
是一元运算符
3.3.6 成员运算符
成员运算符用来判断某个对象是不是某个序列中的成员。in
:对象在序列中则返回True
,否则返回Flase
。not in
:对象不在序列中则返回True
,否则返回False
。
1、in
和not in
都是二元运算符。
2、返回值为布尔类型。
3.3.7 身份运算符
身份运算符用于对对象执行比较操作,即这些运算符检查两个操作数是否引用相同的对象(具有相同的存储位置)。is
:判断两个标识符是不是引用自同一个对象。x is y:类似id(x) == id(y),如果引用的是同一个对象则返回True
,否则返回False
。is not
:判断两个标识符是不是引用自不同对象。x is not y:类似id(a) != id(b)。如果引用的不是同一个对象则返回结果True
,否则返回False
。
1、is
和 is not
都是二元运算符
2、返回的结果为布尔类型。
3.3.8 运算符优先级
以下列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
~、+、- | 按位翻转、正号、负号 |
*、/、%、// | 乘、除、取模、取整除 |
+、- | 加、减 |
>>、<< | 按位右移、按位左移 |
& | 按位与 |
|、^ | 按位或、按位异或 |
<=、<、>、>= | 比较运算符 |
<>、==、!= | 等于运算符 |
=、%=、/=、//=、-=、+=、*=、**= | 赋值运算符 |
is、is not | 身份运算符 |
in、not in | 成员运算符 |
not、and、or | 逻辑运算符 |
对于某些不清楚优先级的运算符,可以通过括号来改变执行运算顺序。
练习
1、了解Python运算符
2、将教程中所有的运算符示例手敲一遍并熟悉
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python运算符 - Python技术站