设为首页 收藏本站
查看: 1089|回复: 0

[经验分享] Python中的运算符

[复制链接]

尚未签到

发表于 2018-8-14 11:09:26 | 显示全部楼层 |阅读模式
一、算术运算
运算(符)说明实例+两个对象相加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) ==>  说明:
  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,否则为0a & b 对应的二进制结果为 0000 1100,十进制为12竖杠按位或:参与运算的两个值,只要对应的二进制位由一个为1时,该位结果就为1a 竖杠 b 对应的二进制结果为 0011 1101,十进制为61^按位异或:参与运算的两个值,当对应的二进制位不同时,该为结果为1,否则改为结果为0a ^ 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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551565-1-1.html 上篇帖子: Python ----脚本CGI、特点、应用、开发环境 下篇帖子: python笔记--异常处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表