【人生苦短,我学 Python】基础篇——运算符(Day6)
大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我
热爱AI、热爱编程、热爱分享
! 这博客是我对学习的一点总结与思考。如果您也对深度学习、机器视觉、算法、Python、C++
感兴趣,可以关注我的动态,我们一起学习,一起进步~
我的博客地址为:【AI 菌】的博客
我的Github项目地址是:【AI 菌】的Github
前言: 本专栏在保证内容完整性的基础上,力求简洁,旨在让初学者更快地入门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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
输出:
位运算符是把数字看作二进制来进行计算的,因此:
- 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)
- 1
- 2
- 3
- 4
- 5
结果:
这里需要特别注意:不是直接对每个二进制位取反,而是先要转为补码,再取反计算,最后再转为原码,比如对于求~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语言支持逻辑运算符,常用的逻辑运算符有以下三种:
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 布尔"与" :如果x、y存在假值,返回x;如果x、y都不是假值,则返回y |
or | x or y | 布尔"或" :如果x、y存在真值,返回x;如果x、y都不是真值,则返回y |
not | not 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)
- 1
- 2
- 3
- 4
- 5
- 6
结果:
六、成员运算符
除了以上的一些运算符之外,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 !")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
结果:
七、身份运算符
身份运算符用于比较两个对象的存储单元。
运算符 | 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是引自不同对象的变量")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
结果:
八、运算优先级
下表按从高到低的优先级顺序列出了所有运算符:
运算符 | 项目 |
---|---|
** | 算术运算符 |
~ + - | 三个符号分别表示:按位反转、一元加号(正号)、一元减号(负号) |
* / % // | 算术运算符 |
+ - | 算术运算符 |
>> << | 位运算符 |
& | 位运算符 |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
== != | 比较运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。
原文链接:ai-wx.blog.csdn.net/article/details/111502693
- 点赞
- 收藏
- 关注作者
评论(0)