python运~算~~符!!!!!!!!!!!
目录:
算术运算, 用于加减乘除等数学运算
- 赋值运算,用于接收运算符或方法调用返回的结果
- 比较运算, 用于做大小或等值比较运算
- 逻辑运算,用于做 与、或、非运算
- 位运算, 用于二进制运算
每种运算中所包含的符号称为相应的运算符,如 算术运算符、比较运算符等。
一、算术运算
| 运算(符) | 说明 | 实例 |
|---|---|---|
| + | 两个对象相加 | 2 + 3 结果为 5 |
| - | 两个对象相减 | 3 - 2 结果为 1 |
| * | 两个数相乘或返回一个重复若干次的序列 | 2 * 3 结果为 6; 'abc' * 2 结果为 'abcabc' |
| / | 两个数相除 | 3 / 2 结果为 1.5 |
| // | 整除,返回商的整数部分 | 3 // 2 结果为 1,3 // 2.0 结果为 1.0 |
| % | 求余/取模,返回除法的余数 | 3 % 2 结果为 1,3 % 2.0 结果为 1.0 |
| ** | 求幂/次方 | 2 ** 3 结果为 8 |
二、赋值运算
| 运算(符) | 描述 | 实例 |
|---|---|---|
| = | 简单赋值运算符 | a = 5, b = 3, c = a - b |
| += | 加法赋值运算符 | a += b 相当于 a = a + b |
| -= | 减法赋值运算符 | a -= b 相当于 a = a -b |
| *= | 乘法赋值运算符 | a = b 相当于 a = a b |
| /= | 除法赋值运算符 | a /= b 相当于 a = a / b |
| //= | 取整除赋值运算符 | a //= b 相当于 a = a // b |
| %= | 取模赋值运算符 | a %= b 相当于 a = a % b |
| **= | 幂赋值运算符符 | a = b 相当于 a = a b |
三、比较运算
Python有8中比较操作,它们具有相同的优先级。比较操作可以被任意连接,比如 x< y <= z 等同于 x < y and y <= z,只是第一种形式下的y只被评估一次。另外,当 x < y不成立时,这两种形式下的z都不会被评估。
| 运算(符) | 说明 | 实例 |
|---|---|---|
| < | 严格小于 | 3 < 5 结果为True,5 < 5 结果为False |
| <= | 小于或等于 | 3 <= 5 结果为True,5 <= 5 结果为True |
| > | 严格大于 | 5 > 3 结果为True,5 > 5 结果为False |
| >= | 大于或等于 | 5 >= 3 结果为True,5 >= 5 结果为True |
| == | 等于 | 1 == 1.0 == True 结果为True |
| != | 不等于 | |
| is | 判断两个标识符是否引用自一个对象 | x is y, 如果id(x) == id(y),即x也y的指向同一个内存地址,则结果为1,否则结果为0 |
| is not | 判断两个标识符是否引用自不同对象 | x is not y, 如果id(x) != id(y),即x和y指向不同的内存地址,则结果为1,否则结果为0 |
说明:
a) 不同类型的对象进行比较,从来不会相等(不同的数字类型除外);
b) 当把<、<=、> 和 >=操作符在这几种情况下会抛出TypeError异常: (1) 用于复数和另外的内置数字类型进行比较时;(2) 比较的对象为不同类型,无法进行比较时;(3) 未定义的其他情况下;
c) 一个类的不同实例通常是不相等的,除非该类定义了__eq__()方法;
d) 一个类的实例不能相对于同一类或其他类的的其他实例进行排序,除非该类定义了足够的方法__lt__(), __le__(), __gt__(), __ge__()。如果想要比较运算符的常规含义, __lt__()和__eq__()就足够了;
e) is 和 is not操作符的行为是不能自定义的;另外,它们可以被应用到两个不同类型的对象,不会已发异常。
f) 另外两个具有相同句法优先级的操作是 in 和 not in,它们支持序列、集合和映射类型的对象。
g) 比较运算的结果为布尔值:True 或 False
四、逻辑运算
“真”值测试(Truth Value Testing)
在讲解“布尔运算”之前,我们先来说下Python中的一个特殊操作--“真”值测试。
Python中的任何一个对象都可以被测试“真”值。这里说的“真”值测试可以这样理解:Python中的任何一个对象都可以转换为一个布尔值,而这个“真”值测试就是获取一个对象对应的布尔值的过程。
Python中只有下面这些值对应的布尔值为False:
- None
- False
- 数字类型中的0,如:0, 0.0, 0j
- 任意空序列,如:'', (), []
- 任意一个空映射,如:{}
- 一个用户自定义类的实例--该用户自定义类中定义了一个__bool__()或__len__()方法,且实例调用该方法时返回整数0或布尔值False
除此之外,所有的其它值对应的布尔值都是True, 因此许多类型的对象永远是True。
"真"值测试可以被用在 if或while条件中,也可以作为布尔操作的操作数。
布尔运算(Boolean Operations)
Python中的逻辑运算称为“布尔运算(Boolean Operations)”,操作符包括:and(与)、or(或)、not(非)。
下面按照他们的优先级升序顺序进行说明:
| 运算 | 结果 |
|---|---|
| x or y | 如果x的Truth值测试结果为False,那么该操作的结果为y的值,否则为x的值 |
| x and y | 如果x的Truth值测试结果为False, 那么该操作的结果为x的值,否则为y的值 |
| not x | 如果x的Truth值测试结果为False, 那么该操作的结果为True,否则结果为False |
说明:
a)or是一个短路操作符,也就是说,只有第一个参数的评估结果为False时,第二个参数才会被评估;
b) and也是一个短路操作符,也就是说,只有第一个参数的评估结果为True时,第二个参数才会被评估;
c) not操作符比非布尔操作符优先级低,因此,not a == b 被解释为 not (a == b);如果写成 a == not b会包语法错误。
五、位运算
按位运算是指把数字转换为二进制来进行计算,位运算符包括以下几种:
假设:
a = 60,对应的二进制格式为 0011 1100
b = 13, 对应的二进制格式为 0000 1101
| 运算符 | 说明 | 实例 |
|---|---|---|
| & | 按位与:参与运算的两个值,如果相应的二进制位都为1,则该位结果为1,否则为0 | a & b 对应的二进制结果为 0000 1100,十进制为12 |
| 竖杠 | 按位或:参与运算的两个值,只要对应的二进制位由一个为1时,该位结果就为1 | a 竖杠 b 对应的二进制结果为 0011 1101,十进制为61 |
| ^ | 按位异或:参与运算的两个值,当对应的二进制位不同时,该为结果为1,否则改为结果为0 | a ^ b 对应的二进制结果为 0011 0001, 十进制为49 |
| ~ | 按位取反:这个是单目运算符,只有一个值参与运算,运算过程是对每个二进制位取反,即把1变0,把0变1 | ~a 的二进制结果为 1100 0011,十进制数为-61 |
| << | 左移运算符:运算数的各二进制位全部左移若干位,高位丢弃,低位补0,结果相当于运算数乘以2的n次方,正负符号不发生改变 | a << 2 的二进制结果为 1111 0000,十进制数为240 |
| >> | 右移运算符:运算数的各二进制位全部右移若干位,结果相当于运算数除以2的n次方,正负符号不发生改变 | a >> 2 的二进制结果为 0000 1111,十进制为15 |
python运~算~~符!!!!!!!!!!!的更多相关文章
- Python 运维
1.python解释器提供提供的小工具 1.1 一秒钟启动一个下载服务器 进入要下载文件的目录(shift+鼠标右键可以很快的在当前目录打开一个cmd) python2: python2 -m Sim ...
- Python运维开发基础07-文件基础【转】
一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...
- Python运维开发基础05-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...
- Python运维开发基础04-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...
- Python运维开发基础02-语法基础【转】
上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...
- 重磅|0元学 Python运维开发,别再错过了
51reboot 运维开发又双叒叕的搞活动了,鉴于之前 51reboot 的活动反馈,每次活动结束后(或者已经结束了很长时间)还有人在问活动的事情.这一次小编先声明一下真的不想在此次活动结束后再听到类 ...
- Python运维编程
Python运维编程 作者:Danbo 2015-10-11 什么是Python,为什么要使用Python? 这个大家自行谷歌,不过看看知乎你就知道Python有多么强大:http://www.zh ...
- 【福吧资源网整理】老男孩-python运维6期 不加密
老男孩-python运维6期 不加密,连夜整理出来分享给大家老男孩的python教程确实不错. 教程目录: 下载地址:http://www.fu83.cn/thread-204-1-1.html
- Python运维开发基础10-函数基础【转】
一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...
随机推荐
- PAT甲级——A1126 Eulerian Path【30】
In graph theory, an Eulerian path is a path in a graph which visits every edge exactly once. Similar ...
- Java必备的几个开发工具,你会几个?
Java技术栈 www.javastack.cn 优秀的Java技术公众号 以下是Java技术栈微信公众号发布的所有关于 Java 常用工具干货,会从以下几个方面汇总,本文会长期更新. 开发工具篇 M ...
- c#使用打印机
在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这 ...
- 一个很笨的方法,写脚本来实现自动调dmp,找有用的数据
很久很久以前用到的方法, 方法挺笨的,但是算是比较实用吧. 全自动的调试dmp,最后只要结果. 谁用得着就给谁看吧. 这里需要两个脚本 1:启动脚本,是一个批处理文件,用来启动调试器,来加载dmp和调 ...
- 论文阅读笔记---HetConv
1 写在前边的话 HetConv性能:当使用HetConv取代标准卷积之后,FLOPs大概是之前的1/8到1/3,更重要的是精度几乎不变!!! 论文地址:https://arxiv.org/abs/1 ...
- linux常用软连接使用ln -s
[软连接]另外一种连接称之为符号连接(Symbolic Link),也叫软连接.软链接文件有类似于Windows的快捷方式.它实际上是一个特殊的文件.在符号连接中,文件实际上是一个文本文件,其中包含的 ...
- 【左偏树】[LuoguP1456] Monkey King
多...多组数据... awsl 死命的MLE,原来是忘记清空数组了.... 左偏树模板? 对于每一个操作,我们把两个节点$x,y$的祖先$fx,fy$找到,然后把他们的左右儿子分别合并 最后把$v[ ...
- 解决Mybatis的invalid bound statement (not found)异常
使用Maven构建SSM时, 需要在pom.xml中配置一些信息, 否则mapper.xml就无法被扫描到, 程序就会抛invalid bound statement (not found)异常 解决 ...
- c++ static关键字的作用
1.被申明的函数或值无法被其他源文件使用 2.static的第二个作用是保持变量内容的持久.(static变量中的记忆功能和全局生存期) 存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯 ...
- vs Code打开新的文件会覆盖窗口中的文件?
这是因为你单击文件名的缘故,这个是“预览模式”,所以再单击其他文件时,会覆盖当前打开的文件. 如果你要每次都打开新tab,那就双击文件名好了.这个逻辑和sublime是一样的. 补充: 预览模式是现在 ...