当前位置: 首页 > news >正文

Python 运算符和表达式

运算符是代表一定运算功能的符号,可以对常量、变量等进行处理。由各种运算符和运算对象组成的式子称为表达式。

常见的运算符和表达式

算数运算符和算术运算表达式

算数运算符用于对算数运算对象进行算术运算。由算数运算符与算数运算对象组成的式子称为算术运算表达式。

运算符名称算数运算表达式实例表达式结果(设 a = 3,b = 4)
+a + b7
-a - b-1
*a * b12
/a / b0.75
%取模a % b3
**a ** b64
//整除a // b0

算数运算符两边的操作数一般为整型或浮点型,特殊情况下也可以是布尔类型或复数类型。当参与算术运算的两个操作数是整型或浮点型时,其运算结果类型也是整型或浮点型。

print(2 / 3)  # 一般情况下,python中的除法运算结果均为 浮点数
print(2 // 3)  # 只有当整除时,才会得到整型的结果

关系运算符和关系运算表达式

关系运算符用来比较两个对象之间的关系。对象可以是数或字符串等常量、变量或表达式。由关系运算符与比较对象组成的表达式称为关系运算表达式。关系表达式的结果为真返回True,否则返回 False。

运算符描述实例表达式结果(设 a = 20,b = 30)
==等于a == bFalse
!=不等于a != bTrue
>大于a > bFalse
<小于a < bTrue
>=大于等于a >= bFalse
<=小于等于a <= bTrue

赋值运算符和赋值运算表达式

赋值运算符用来将表达式的结果赋给变量。由赋值运算符与赋值运算对象组成的式子称为赋值运算表达式。

运算符名称实例表达式结果(设 a = 4, b = 3, c = 2)
=简单赋值运算符c = a + bc = 7
+=加法赋值运算符c += a 等价于 c = c + ac = 6
-=减法赋值运算符c -= a 等价于 c = c - ac = -2
*=乘法赋值运算符c *= a 等价于 c = c * ac = 8
/=除法赋值运算符c /= a 等价于 c = c / ac = 0.5
%=取模赋值运算符c %= a 等价于 c = c % ac = 2
**=幂赋值运算符c **= a 等价于 c = c ** ac = 16
//=取整除赋值运算符c //= a 等价于 c = c // ac = 0

逻辑运算符和逻辑运算表达式

逻辑运算符用来判断逻辑运算对象之间的关系。由逻辑运算符与逻辑运算对象组成的式子称为逻辑运算表达式。

运算符名称逻辑表达式描述
and逻辑“与”x and yx 为 True 或非 0,返回 y,否则返回 x
or逻辑“或”x or yx 为 True 或非 0,返回 x,否则返回 y
not逻辑“非”not xx 为 True 或非 0,返回 False,否则返回 True
'''
其实不用看表格描述,只要清楚逻辑运算中(中学数学有教过的)
与:两边同真才为真
或:一边为真就为真
非:真的非为假

真值:除 0 以外的其余一切均为真值
'''

位运算符和位运算表达式

位运算符用来把两个运算对象按照二进制进行位运算。由位运算符与位运算对象组成的式子称为位运算表达式。

运算符名称实例表达式结果(a = 60(0011 1100), b = 13(0000 1101))
&按位与a & b12(0000 1100)
|按位或a | b61(0011 1101)
^按位异或a ^ b49(0011 0001)
~按位取反~ a-61(1100 0011)
<<左移位a << 2240(1111 0000)
>>右移位a >> 215(0000 1111)
# 使用"^"运算符对字符加密和解密 
key = input("请输入加密密钥: ")
enc = input("请输入要加密的字符: ")
dec = ord(key) ^ ord(enc)     # 对字符加密
print("加密结果: ", chr(dec))
enc_1 = ord(key) ^ dec        # 对字符解密
print("解密结果: ", chr(enc_1))

请输入加密密钥: 1
请输入要加密的字符: h
加密结果:  Y
解密结果:  h

成员运算符和成员运算表达式

成员运算符用来判断两个对象之间的关系。由成员运算符与成员运算对象组成的式子称为成员运算表达式。

运算符描述实例结果
in判断对象是否在序列中obj in sequenceobj 在 sequence 中返回 True,否则返回 False
not in判断对象是否不在序列中obj not in sequenceobj 不在 sequence 中返回 True,否则返回 False
ls = [3, 6, 5, '洛梦裳', '白浅予', '我的']
a = '3' in ls
b = 3 not in ls
print("a = ", a, "b = ", b)

a =  False b =  False

身份运算符和身份运算表达式

运算符描述实例结果
is判断两个标识符是不是引用自同一个对象x is y引用同一个对象返回 True, 否则返回 False
is not判断两个标识符是不是引用自不同对象x is not y引用不同对象返回 True, 否则返回 False

is 运算符, == 运算符和 operator 中的 eq() 区别:
a == b :比较对象a 和对象 b 的值是否相等。相等返回 True, 不相等返回 False。operator.eq(a, b) 类似。
a is b:比较对象a 和对象 b 是否有相同的引用,即 id 是否相等。相同的返回 True,否则返回 False。

a = 3
print("id(a) = ", id(a))
b = 3
print("id(b) = ", id(b))
c = '3'
print("id(c) = ", id(c))
res1 = a is b
res2 = b is not c
print("结果1: ", res1, "结果2: ", res2)

id(a) =  2526965727536
id(b) =  2526965727536
id(c) =  2526967051696
结果1:  True 结果2:  True

运算符优先级

当多种运算符出现在同一个表达式中时,按照运算符的优先级决定运算次序,优先级高的运算将先得到处理。下表中等级1的优先级最高。

等级运算符名称
1(), [], {}括号
2**指数运算
3~, +, -按位取反,一元加号和减号
4*, /, %, //乘,除,取模和取整除
5+, -加法,减法
6>>, <<右移,左移运算符
7&位与
8^, |异或,位或
9<, <=, >, >=比较运算符
10==, !=等于,不等于运算符
11=, %=, /=, //=, -=, +=, *=, **=赋值运算符
12is, is not身份运算符
13in, not in成员运算符
14not, and, or逻辑运算符

补充说明

  • Python 中的一些运算符不仅可用于数字等运算,还可以用于对字符串、列表和元组等组合对象的运算。
  • Python支持 ++i,–i 运算符,但含义和其他语言的不同。
  • Python 不支持 i++, i-- 运算符.

>>> i = 2
>>> ++i    # 等价于 +(+i)
2
>>> --i     # 等价于 -(-i)
2
>>> 2--3    # 等价于 2-(-3)
5
>>> i++
  File "<stdin>", line 1
    i++
       ^
SyntaxError: invalid syntax
>>> i--
  File "<stdin>", line 1
    i--
       ^
SyntaxError: invalid syntax

写在最后:
首先,如果本篇文章有任何错误,烦请读者告知!不胜感激!
其次,本篇文章仅用于日常学习以及学业复习,如需转载等操作请告知作者(我)一声!
最后,本文会持续修改和更新,如果对本分栏的其他知识也感兴趣,可以移步目录导航专栏,查看本分栏的目录结构,也更方便对于知识的系统总结!
兄弟姐妹们,点个赞呗!
感谢!笔芯!

相关文章:

  • 【LeetCode】2022 8月 每日一题
  • AcWing-1-递归实现指数型枚举
  • 易基因|文献科普:DNA甲基化测序揭示DNMT3a在调控T细胞同种异体反应中的关键作用
  • 基于springboot小型车队管理系统毕业设计源码061709
  • 大数据ClickHouse进阶(一):ClickHouse使用场景和集群安装
  • js面向对象之封装,继承,多态,类的详解
  • 永久免费H5直播点播播放器SkeyeWebPlayer.js实现webrtc流播放
  • JavaScript-HelloWorld、浏览器控制台使用、数据类型
  • Centos部署Docker
  • 视频剪辑教程自学技巧:关于正确的短视频剪辑流程分享
  • 30、三维表面重建-Convolutional Occupancy Network
  • Android 用户如何将Room根据不同账户动态分库方案
  • 539、RabbitMQ详细入门教程系列 -【100%消息投递消费(一)】 2022.08.31
  • 基于信贷业务的量化风险评估简述
  • 项目经理如何做好任务分解,制定项目计划
  • php的引用
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • angular组件开发
  • chrome扩展demo1-小时钟
  • docker-consul
  • JavaScript服务器推送技术之 WebSocket
  • java取消线程实例
  • jquery cookie
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • VUE es6技巧写法(持续更新中~~~)
  • 彻底搞懂浏览器Event-loop
  • 分布式任务队列Celery
  • 复习Javascript专题(四):js中的深浅拷贝
  • 基于web的全景—— Pannellum小试
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 入门到放弃node系列之Hello Word篇
  • 使用Swoole加速Laravel(正式环境中)
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 用element的upload组件实现多图片上传和压缩
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (07)Hive——窗口函数详解
  • (2020)Java后端开发----(面试题和笔试题)
  • (Oracle)SQL优化技巧(一):分页查询
  • (八)Flask之app.route装饰器函数的参数
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)终结任务
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。