30天Python入门到进阶(基础篇)——第3天:运算符

Python 中的运算符主要分为算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符和身份运算符共 7 大类,运算符之间也是由优先级的,下面我们就来进行具体介绍。

一、算术运算符

算术运算符就是我们平常所说的加减乘除,但是Python里的算术运算符不仅仅只有这四个,还有取余运算、整除运算、乘方(幂)运算。

运算符 描述
+ 两个数相加,或是字符串连接
- 两个数相减
* 两个数相乘,或是返回一个重复若干次的字符串
/ 两个数相除,结果为浮点数(小数)
// 两个数相除,结果为向下取整的整数
% 取模,返回两个数相除的余数
** 幂运算,返回乘方结果

以上算术运算符的示例和运行结果如下所示:

print(5 + 2)    # 7
print(5 + 2.0)  # 7,返回类型为float
print(3 - 2.0)  # 1.0,只要参与运算的有浮点数,返回类型为float
print(3 * 2)    # 6,*:乘号
print(5 / 2)    # 2.5
print(5 // 2)   # 2,整除
print(5 % 3)    # 2,取模,返回两个数相除的余数
print(3 ** 2)   # 9,**:次方

二、比较(关系)运算符

运算符 描述
== 比较两个对象是否相等
!= 比较两个对象是否不相等
> 大小比较,例如 x>y 将比较 x 和 y 的大小,如 x 比 y 大,返回 True,否则返回 False
< 小比较,例如 x<y 将比较 x 和 y 的大小,如 x 比 y 小,返回T rue,否则返回 False
>= 比较两个对象是否相等大小比较,例如 x>=y 将比较 x 和 y 的大小,如 x 大于等于 y,返回 True,否则返回 False
<= 大小比较,例如 x<=y 将比较 x 和 y 的大小,如 x 小于等于 y,返回 True,否则返回 False

以上比较运算符的示例和运行结果如下所示:

# 比较运算符 返回的都是bool类型(True False)
print(True==1)      # ==比较两个值是否相等,返回bool值
print(False==0)     # True
print(1 != 2)       # True  不等号!=
print(1 > 2)       # False  1 小于 2
print(1 < 2)       # True   1 小于 2
print(2 >= 2)       # True   2 大于等于 2
print(3 <= 2)       # False   3 大于等于 2
 
print(2.0==2)       # True,比较运算符-->比较的是数值
print('2'==2)       # False,字符串不是数值,因此是False,字符串相加其实做拼接

三、赋值运算符

运算符 描述
= 常规赋值运算符,将运算结果赋值给变量
+= 加法赋值运算符,例如 x+=y 等效于 x=x+y
-= 减法赋值运算符,例如 x-=y 等效于 x=x-y
*= 乘法赋值运算符,例如 x*=y 等效于 x=x*y
/= 除法赋值运算符,例如 x/=y 等效于 x=x/y
%= 取模赋值运算符,例如 x%=y 等效于 x=x%y
**= 幂运算赋值运算符,例如 x**=y等效于 x=x**y
//= 取整除赋值运算符,例如 x//=y 等效于 x=x//y

赋值运算:将等号右边赋值给等号左边,在Python中不支持Java、c++中的i++或者i–语法

a = 1         # 将等号右边的 赋值 给等号左边的
a  = a + 1    # 先等号右边的进行计算,然后,将结果赋值给等号左边的
print(a)
 
a += 1        # a = a+1
print(a)
# print(a++)  # python不支持a++,a--语法
 
a /= 1        # a = a/1
print(a)

四、逻辑运算符

运算符 描述
and 布尔“与”运算符,返回两个变量“与”运算的结果
or 布尔“或”运算符,返回两个变量“或”运算的结果
not 布尔“非”运算符,返回对变量“非”运算的结果

and(与)逻辑:两个都为 True 才为 True,否则为 Falseor(或逻辑):有一个为 True 则为 True

print(3 > 2 and 2 > 1)      # 返回的是bool类型 True and True -->True
print(3 > 2 or 2 > 1)       # 返回的是bool类型 Ture and Tue -->True
print(3 > 2 or 2 < 1)       # 返回的是bool类型 Ture and False -->True
print(not (3>2))            # not True相反结果就是False
 
a = True
b = True
c = False
d = False
print(a and b)      # True
print(a and c)      # False
 
# 连续比较:a>b>c --> a>b and b>c  两者都为True才为True
print(3>2>1)        # True
print(3>2>2)        # 3>2(True) and 2>2(False)
print((3>2)>1)      # 加了小括号优先级。True > 1 -->False
print(True==1)      #1不大于1

五、位运算符

运算符 描述
& 按位“与”运算符:参与运算的两个值,如果两个相应位都为 1,则结果为 1,否则为 0
按位“或”运算符:只要对应的两个二进制位有一个为 1 时,结果就为 1
^ 按位“异或”运算符:当两对应的二进制位相异时,结果为 1
~ 按位“取反”运算符:对数据的每个二进制位取反,即把 1 变为 0,把 0 变为 1
<< “左移动”运算符:运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃, 低位补 0
>> “右移动”运算符:运算数的各二进制位全部右移若干位,由“>>”右边的数指定移动的位数

& 与 、| 或 、^ 异或

例如:a=40, b=12。取二进制

a=00101000
b=00001100   

a &b=00001000  两个都为1才为1,否则为0

a|b=0010110 0 有一个为1则为1

a^b=0 0 1 0 0100 两个不同则为1

a=40
b=12
print( a & b)  # 8
print( a | b)  # 44
print( a ^ b)  # 36
print(a >> 3)  # 5
print(a << 3)  # 320

六、成员运算符

运算符 描述
in 当在指定的序列中找到值时返回 True,否则返回 False
not in 当在指定的序列中没有找到值时返回 True,否则返回 False

innot in 是 Python 独有的运算符(全部都是小写的字母),用于判断对象是否是某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类型的True 或者 False

# 成员运算符in in not
age = 1
 
age_list = [1, 2, 3, 4]
 
# 判断 age 在 age_list 中则返回True
print(age in age_list)
# if age in age_list:
#     print("在")
# else:
#     print("不在")
 
# 判断 age 不在 age_list 中则返回True
print(age not in age_list)
 
print('Python' in ['Hello','World','Python'])     # True, Python 在这个集合中,因此返回True
print('Java' not in ['Hello','World','Python'])   # True, Java 不在这个集合中,因此返回True

七、身份运算符

运算符 描述
is 判断两个标识符是否引用自同一个对象,若引用的是同一个对象则返回 True,否则返回 False
is not 判断两个标识符是不是引用自不同对象,若引用的不是同一个对象则返回 True,否则返回 False

注意:is== 的区别

1、is 用于判断两个变量的引用是否为同一个内存地址(可使用id()查看)

2、== 用于判断两个变量的值是否相等

print(id(a)) 查看 a 的内存地址,is 判断内存地址是否相同,成立则为 Trueis not判断内存地址不相同,成立则为 True

# 身份运算符is is not
a=[1,2,3]
b=[1,2,3]
print(a is b)       # False     is比较两者的内存地址(id())
print(a is not b)    # True  a和b的内存地址不一样,因此返回True
print(id(a))        #2348506224000
print(id(b))        #2348508782720
 
print(a==b)         # True:==是比较值
 
# 注意:is用于判断两个变量是否为同一个内存地址(可以用id()查看)
# ==用于判断两个变量的值是否相等
# 如果a=b=[1,2,3],则他们的内存地址相等

八、运算符优先级

运算符存在着优先级高的运算符优先计算或处理,同级别的按从左往右的顺序计算(赋值运算符除外,它是按从右往左的顺序)

运算符 描述
**
~ 按位取反
*、/、%、// 乘、除、取模、取整除
+、- 加、减
>>、<< 右移、左移
& 按位“与”
^、∣ 按位“异或”、按位“或”
<=、<、>、>= 比较运算符
==、!= 比较运算符
<=、<、>、>= 等于、不等于
=、%=、/=、//=、-=、+=、*=、**= 赋值运算符
is、is not 身份运算符
in、not in 成员运算符
and or not 逻辑运算符

猜你喜欢

转载自blog.csdn.net/m0_71251976/article/details/125201223