【人生苦短,我学 Python】基础篇——运算符(Day6)

大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱编程、热爱分享! 这博客是我对学习的一点总结与思考。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~
我的博客地址为:【AI 菌】的博客
我的Github项目地址是:【AI 菌】的Github

-> 前往【人生苦短,我学 Python】总目录 <-

前言: 本专栏在保证内容完整性的基础上,力求简洁,旨在让初学者更快地入门Python。这个Python学习专栏我打算分三个阶段:基础知识、进阶知识、实战训练。这将是一套完整、高效、循序渐进的Python系列讲解,您可以当做Python学习的入门教程。


我们都知道,在数学中进行各类计算需要运算符号,比如常用的加、减、乘、除等。同样地,在Python编程中,有时需要处理计算不同的数据、逻辑关系等,这时候对不同运算符的掌握就显得尤为重要了。这一讲就来聊聊Python中必须知道的七大类运算符运算优先级



一、算术运算符

算术运算符,可以理解为进行算术计算的运算符。在Python中,有下列这7种常用的算术运算符:

运算符Value
+相加
-相减
*相乘
/相除
%取模,返回余数
**幂,返回x的y次幂
//整除,向下取整

二、比较运算符

比较运算符用来比较两个对象的大小,返回True或者False。常用的比较运算符如下:

运算符Value
==比较两对象是否相等
!=比较两个对象是否不相等
>返回x是否大于y
<返回x是否小于y
>=大于或等于
<=小于或等于

三、赋值运算符

在Pyhton中,最简单的赋值运算符是=,注意要和前面说到的关系运算符==区分。

以下是Pyhton中常用的(复合)赋值运算符:

运算符Value
=赋值运算符
+=a += i 等效于 a = a + i
-=a -= i 等效于 a = a - i
*=a *= i 等效于 a = a * i
/=a /= i 等效于 a = a / i
%=a %= i 等效于 a = a % i
**=a **= i 等效于 a = a ** i
//=a //= i 等效于 a = a // i
:=可在表达式内部为变量赋值,是Python3.8 版本新增运算符。

四、位运算符

位运算符是把数字看作二进制来进行计算的。下面是一些常用的位运算符:

运算符Value
&按位与
|按位或
^异或:当两对应的二进位相异时,结果为1
~按位取反
<<左移运算符,左移一位相当于乘以2
>>右移运算符,右移一位相当于除以2

下面举例演示了一下位运算符的操作:

a = 5  # 二进制形式为:0101
b = 10  # 二进制形式为:1010

print("a&b =", a&b)
print("a|b =", a|b)
print("a^b =", a^b)

print("a<<1 =", a<<1)
print("b>>1 =", b>>1)

输出:
在这里插入图片描述
位运算符是把数字看作二进制来进行计算的,因此:

  • a & b = (0101) & (1010) = 0000,转化为10进制则为0
  • a | b = (0101) | (1010) = 1111,转化为10进制则为15
  • a ^ b = (0101) ^ (1010) = 1111,转化为10进制则为15
  • a<<1,a左移一位,相当于乘以2,所以结果为10
  • b>>1,b右移一位,相当于除以2,所以结果为5

最后,介绍一下按位取反操作 ~:对数据的每个二进制位取反,即把1变为0,把0变为1。下面举一个简单例子:

a = 5  # 二进制表示为: 0 0101
b = -6  # 二进制表示为: 1 0110

print(~a)
print(~b)

结果:
在这里插入图片描述
这里需要特别注意:不是直接对每个二进制位取反,而是先要转为补码,再取反计算,最后再转为原码,比如对于求~a:

  • 先求a的补码,是其本身0 0101
  • 然后按位取反得,1 1010
  • 最后再转原码得,1 0101 + 1 = 1 0110,十进制表示就是-6

同样,对于求~b:

  • 先求b的补码,1 1001 +1 = 1 1010
  • 然后按位取反得,0 0101
  • 最后再转原码得,0 0101,十进制表示就是5

原码与补码的转换规则:正数的补码是其本身,负数的补码,符号位不变,数值位取反加1

当然,对于取反操作~,你也可以直接记规律: ~x = -x -1

五、逻辑运算符

Python语言支持逻辑运算符,常用的逻辑运算符有以下三种:

运算符逻辑表达式描述
andx and y布尔"与" :如果x、y存在假值,返回x;如果x、y都不是假值,则返回y
orx or y布尔"或" :如果x、y存在真值,返回x;如果x、y都不是真值,则返回y
notnot x布尔"非" : 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

在Python里面,0、’ ’、[]、()、{}、None均为假,其它任何东西都为真。在此基础上,下面举例演示了一下逻辑运算符的操作:

a = 5
b = 0

print("a and b =", a and b)
print("a or b =", a or b)
print("not b =", not b)

结果:
在这里插入图片描述

六、成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符Value
in如果在指定的序列中找到值返回 True,否则返回 False。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。

下面举例演示了一下成员运算符的操作:

a = 5
b = 0
list = [1, 2, 3, 4, 5, 6]

if a in list:
    print("a is in list !")
else:
    print("a is not in list !")

if b not in list:
    print("b is not in list !")
else:
    print("b is  in list !")

结果:
在这里插入图片描述

七、身份运算符

身份运算符用于比较两个对象的存储单元。

运算符Value
is判断两个标识符是不是引用自同一个对象
is not判断两个标识符是不是引用自不同对象

函数 id() 用于获取对象内存地址。下面举例演示了一下身份运算符的操作:

a = 5
b = 5
print("id(a) =", id(a), "id(b) =", id(b))
if a is b:
    print("a,b是引自同一个对象的变量\n")
else:
    print("a,b是引自不同对象的变量\n")

b = 10  # 修改b
print("id(a) =", id(a), "id(b) =", id(b))
if a is b:
    print("a,b是引自同一个对象的变量")
else:
    print("a,b是引自不同对象的变量")

结果:
在这里插入图片描述

八、运算优先级

下表按从高到低的优先级顺序列出了所有运算符:

运算符项目
**算术运算符
~ + -三个符号分别表示:按位反转、一元加号(正号)、一元减号(负号)
* / % //算术运算符
+ -算术运算符
>> <<位运算符
&位运算符
^ |位运算符
<= < > >=比较运算符
== !=比较运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
not and or逻辑运算符
AI 菌 CSDN认证博客专家 博客专家 CSDN合作伙伴 算法实习僧
研究僧一枚,CSDN博客专家,公众号【AI 修炼之路】作者。专注于无人驾驶(环境感知方向),热衷于分享AI、CV、DL、ML、OpenCV、Python、C++等相关技术文章。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值