《A Byte of Python》阅读记录——Python中的运算符和表达式
bigegpt 2024-11-04 12:13 4 浏览
我们都知道,我们所编写的大多数语句(逻辑行)都包含了表达式(expressions)。一个表达式我们可以简单的理解为包含运算符(operators)与操作数(operands)的式子。这里的运算符包含了我们最常见的加、减、乘、除、乘方、整除、求余数等,也包含了我们平时不常见的按位运算的左移、右移、按位与、按位或、按位异或、按位取反等,同时还包含关于逻辑运算的大于、小于、等于、不等于等等。
本文就对Python中的运算符进行一些简要的概述。可能对于其他语言的用户来说,有一些相同的,也有一些不同的。相同的我们都好理解,不同的就去学习一下这些运算在Python中是如何实现的。
关于运算符的所有操作我们都可以直接在交互式Python解释器提示符下面进行操作。
下面就开始对Python的运算符进行讲述:
1. 加 +
即两个对象相加。我们在Python中直接将两数相加会得到这两个数之和。但是我们将两个字符串相加,则是将两个字符串连接成一个字符串。
我还记得在VB中,连接两个字符串要使用&符号。这里也算是Python的功能简单的体现了吧。
2. 减 -
即一个数减去另一个数,如果第一个操作数不存在,则假定为零。
这里,我们可以看出来,不存在字符串减字符串的操作哦。
3. 乘 *
数学上面我们的乘号是×,但是实际上计算机的操作里面是没有×这个符号的,我们都是使用*来表示乘。返回的结果有两个可能性,一个是两个数的乘积,另一个是返回字符串重复指定次数后的结果。
4. 乘方 **
Python里面使用两个连续的*号来表示乘方。例如:3**4输出81
5. 除 /
返回一个数除以另外一个数的值。例如:13/3 输出4.33333333.
6. 整除 //
Python里面使用两个斜杠来表示整除。即一个数除以另外一个数,并对结果向下取整至最接近的整数。例如:13 // 3 输出4,-13 // 3 输出-5
7. 取余数 %
Python里面使用%来表示一个数除以另外一个数后的余数。例如:13 % 3 输出1
8.
左移 <<
每一个数字在内存中是以二进制数的方式存在的。例如数字2的二进制数表示为10 。Python使用<<来表示将某数的二进制位往左移动,末位用0来补充。所以2<<3的意思为10左移三位,末位补充3个0,二进制结果为10000 ,然后转换为十进制输出为16 。
9. 右移 >>
类似于左移,Python里面使用>>来表示将某数的二进制位往右移。所以17>>3的意思为17的二进制数为10001,右移3位,二进制结果为10,然后转换为十进制输出为2 。
10. 按位与 &
Python里面使用&对数字进行按位与操作。即两数的相同二进制位都为1时,结果为1,否则结果为0 。 例如5&3,即操作0101和0011进行按位与操作,得到结果为0001,转换为十进制输出为1 。
11. 按位或 |
Python里面使用|对数字进行按位或操作。即两数的相同二进制位中有一个为1时,结果为1,只有两个都为0时,结果为0 。 例如5|3,即操作0101和0011进行按位或操作,得到结果为0111,转换为十进制输出为7 。
12. 按位异或 ^
Python里面使用^对数字进行按位异或操作。即两数的相同二进制位中两个都为1或都为0,结果为1,否则结果为0 。 例如5^3,即操作0101和0011进行按位异或操作,得到结果为0110,转换为十进制输出为6 。
13. 按位取反 ~
Python里面使用~对数字x进行按位取反操作,得到结果为-(x+1)。例如~5,得到的结果为-(5+1),即为-6 。
Python里面的逻辑运算,其返回的值为布尔值,即True或者False。请注意,Python返回的结果中,True和False的首字母皆为大写。
接下来,我们对Python里面的逻辑运算进行简述。
14. 大于>
比较x是否大于y。是则返回True,否则返回False。例如5>3,则返回True。
15. 小于<
比较x是否小于y。是则返回True,否则返回False。例如5<3,则返回False。
16. 大于等于>=
比较x是否大于等于y。是则返回True,否则返回False。例如5>=3,则返回True。
17. 小于等于<=
比较x是否小于等于y。是则返回True,否则返回False。例如5<=3,则返回False。
18. 等于==
比较x是否等于y。是则返回True,否则返回False。这里要特别注意,Python中一个=表示赋值,两个=表示判断是否相等。我在2020年四川省七年级下的信息技术教材中发现有一个判断密码正误的程序编写时就出现了错误,本来应该是userpwd = input('请输入密码:'),意思为利用input函数输入一个值,并将这个值赋值给变量userpwd,但是编者写成了userpwd == input('请输入密码:')。这样的逻辑错误我们一定要引以为戒。例如5==3,则返回False
19. 不等于!=
比较x是否不等于y。是则返回True,否则返回False。例如5!=3,则返回True。
20. 布尔"非" not
如果x是True,则返回False。如果x是False,则返回True。例如not True,返回False
21. 布尔"与" and
如果x是False,则x and y 返回False,否则返回y的计算值。当x是False时,Python将不会计算y,因为它已经了解and表达式的左侧是False,这就意味着整个表达式都将是False。这种情况被称作短路计算(Short-circuit Evaluation)。只有当x是True时,Python才会去计算y的值,当y是True时,则返回True,否则返回False。例如:5<3 and 6>3,返回False
22. 布尔"或" or
如果x是True,则返回True,否则返回y的计算值。同理,当x是True时,Python将不会计算y,在这里短路计算同样适用。只有当x是False时,Python才会去计算y的值,当y是True时,则返回True,否则返回False。5<3 or 6>3,返回True
今天,我们系统的学习了Python关于运算符和表达式的内容,程序员的道路往往的枯燥乏味的,但是我们总是能够在这中间获得一些乐趣。这就是所谓的每天进步一点点吧。
本文由肖仲生原创,欢迎关注,带你一起长知识!
相关推荐
- 悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)
-
新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...
- 高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源
-
凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...
- 微服务架构实战:商家管理后台与sso设计,SSO客户端设计
-
SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...
- 还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑
-
在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...
- Seata源码—6.Seata AT模式的数据源代理二
-
大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...
- 30分钟了解K8S(30分钟了解微积分)
-
微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...
- SpringBoot条件化配置(@Conditional)全面解析与实战指南
-
一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...
- 一招解决所有依赖冲突(克服依赖)
-
背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...
- 你读过Mybatis的源码?说说它用到了几种设计模式
-
学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...
- golang对接阿里云私有Bucket上传图片、授权访问图片
-
1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...
- spring中的资源的加载(spring加载原理)
-
最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...
- Android资源使用(android资源文件)
-
Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...
- 如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)
-
深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...
- @Autowired与@Resource原理知识点详解
-
springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...
- java的redis连接工具篇(java redis client)
-
在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)