运算符的优先级 | 学习笔记

简介: 快速学习 运算符的优先级

开发者学堂课程【Python入门 2020年版运算符的优先级】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10257


运算符的优先级


内容介绍:

一、优先级简介

二、需要特殊记忆的运算符

三、逻辑运算符规则


一、优先级简介

1)举例

print10-2*3) 结果是4,有加减和乘除时应先算乘除再算加减。

print (10+2*3**2) 有幂运算时先算幂运算 数学写法是10+2×3^2,应先算3^2,得到9后再运算,结果是28,这些都涉及运算符的优先级问题,优先级非常重要。

2)优先级

除了这些单纯的算术运算符加乘和幂外,还有大于、小于、大于等于、小于等于、不等于、等等于、andornot 等各种运算符(逻辑运算符、比较运算符,位运算符等)。

当它们混在一起时,优先级如下。

**   指数(最高优先级)

+ - 按位翻转,一元加号和减号(最后两个的方法名为+@-@

* / % // 乘,除,取模和取整除

+ -加法减法

>><<  右移,左移运算符

&  ' AND

^ | 位运算符

<= <> >= 比较运算符

<> ==  = 等于运算符

=%=/= //=-=+=*=**= 赋值运算符

is is not 身份运算符

in not in 成员运算符

not>and>or 逻辑运算符

这些优先级每个都是一层。

第一个最高优先级是指数运算,即幂运算。

第二个优先级 第一个符号波浪线是按位取反,是下一级的,涉及到复数的二进制,不做深入了解;第二三个符号是正负号,不是加减,也是一个一元运算符。


二、需要特殊记忆的运算符

1)若从左往右运算

print(True or False and True):True or False 结果为 True, 原式转换为 True and True,于是结果为 True

print(False or not False) not 即取反,not False True,于是结果为 True

print(True or True and False) True or True 结果为 True, 原式转换为 Ture and False,最终结果为 False

2)实际运算

实际运行上述三式后结果为 True, Ture,True. 第三例有优先级的问题须注意,逻辑运算的优先级是 not and or . 从左往右算,是错误的算法。

例一应先算 False and True,再算 True 与它的结果,即先算 and 再算 or.

例三应先算 True and False, 结果为 False, 再算 True or False, 结果为 True。加括号可以提高优先级,若给 True or True 加上括号,则优先运算括号内内容,原式转换为 True and False, 最终结果为 False.

3)括号

在开发中强烈建议使用括号说明运算符的优先级。即使不影响结果按照逻辑加括号也可以方便阅读。


三、逻辑运算符规则

1)逻辑与运算

只要有一个运算数是 False,结果就是 False; 只有所有的运算数都是 True, 结果才是 True.

短路:只要遇到了 False 就停止,不再继续执行。

取值:取第一个为 False, 如果所有的运算数都是 True,取最后一个运算数。

2)逻辑或运算

只要有一个运算数是 True ,结果就是 True ;只有所有的运算数都是 False,结果才是 False.

短路:只要遇到了 True ,就停止,不再继续执行。

取值:取第一个为 True 的值,如果所有的运算数都是 False ,取最后一个运算数。

相关文章
|
5月前
|
缓存 监控 JavaScript
《Electron应用性能深耕:资源加载与内存治理的进阶路径》
本文围绕Electron桌面应用的性能优化展开,深入剖析了资源加载与内存治理的进阶路径。从底层机制出发,分析了Electron在主进程预加载、渲染进程解析、跨进程共享等环节的资源加载瓶颈,提出了包含动态加载、多级缓存、格式优化等在内的突破策略;针对内存占用问题,从渲染进程、主进程、GPU内存管理及垃圾回收机制等方面,构建了系统性优化方案。同时,结合实战案例探讨了优化中的辩证关系与跨平台适配经验,强调以数据驱动实现动态调节,为提升Electron应用性能提供了全面且深入的技术指引。
312 0
|
机器学习/深度学习 编解码 算法
深度学习之边缘检测
边缘检测是计算机视觉中的一项基本任务,旨在识别图像中像素值变化显著的区域,即边缘。传统的边缘检测算法(如Sobel、Canny等)通过滤波器和梯度运算来检测边缘,而基于深度学习的方法则通过训练神经网络自动学习图像中的边缘特征,从而实现更高的检测精度和鲁棒性。
644 1
|
负载均衡 算法 大数据
[flink 实时流基础] 转换算子
[flink 实时流基础] 转换算子
350 2
|
SQL 关系型数据库 MySQL
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
1456 1
|
前端开发 安全 开发者
前端开发中的跨域资源共享(CORS)问题及解决方案探讨
在前端开发中,跨域资源共享(CORS)是一个常见且重要的问题。本文将深入探讨CORS的原理、影响以及解决方案,帮助开发者更好地应对跨域请求问题。
|
域名解析 安全 网络安全
使用Python自动检测SSL证书是否过期
使用Python自动检测SSL证书是否过期
554 0
|
存储 SQL Prometheus
SLS数据加工完成Log到Metric的转换
简介: # 使用数据加工将Log转成Metric ## 云原生时代的可观察性 我们关注应用运行起来后的运行时数据,主要有Log、Trace和Metric 这3大类。 Log是离散的事件,Trace可以认为是带请求追踪的事件,Metric是带统计量的事件。
727 1
|
机器学习/深度学习 存储 自然语言处理
谷歌新语言模型Switch Transformer
谷歌新语言模型Switch Transformer
738 0
谷歌新语言模型Switch Transformer
|
监控 Dubbo Cloud Native
如何解决服务雪崩?
一.什么是服务雪崩 (1)分布式系统环境下,通常会有很多层的服务调用。由于网络原因或自身的原因,服务一般无法保证100%可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。 (2)如下图,对于同步调用,当底层的库存服务不可用时,商品服务请求线程被阻塞,当有大批请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。 (3)由于服务与服务之间的依赖性,故障会传播,不可用沿请求调用链向上传递,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩效应”。
866 0
如何解决服务雪崩?
|
开发者 知识图谱
【Offer 5000】独家福利!《阿里云技术面试红宝书》免费送
有了此书,你无需漫无目的地花大把时间在题海战术准备上,而是在精准回顾知识点的同时,间接地与技术大牛们做了直观的沟通,了解他们的出题思路与考察要点,用上举一反三的技能即可。
14010 0
【Offer 5000】独家福利!《阿里云技术面试红宝书》免费送