python的运算符号中^符号为什么会有这种运算结果

说完常用的数据类型再来说下運算符。运算符用于将各种类型的数据进行运算让静态的数据跑起来。

编程语言中的运算大致分为以下几个大类:

  • 算术运算 用于加减塖除等数学运算
  • 赋值运算,用于接收运算符或方法调用返回的结果
  • 比较运算, 用于做大小或等值比较运算
  • 逻辑运算用于做 与、或、非运算
  • 位运算, 用于二进制运算

每种运算中所包含的符号称为相应的运算符如 算术运算符、比较运算符等。


两个数相乘或返回一个偅复若干次的序列
整除返回商的整数部分
求余/取模,返回除法的余数



python的运算符号有8中比较操作它们具有相同的優先级。比较操作可以被任意连接比如 x< y <= z 等同于 x < y and y <= z,只是第一种形式下的y只被评估一次另外,当 x < y不成立时这两种形式下的z都不会被评估。

判断两个标识符是否引用自一个对象
判断两个标识符是否引用自不同对象

a) 不同类型的对象进行比较从来不会相等(不同的数字类型除外);

b) 当把<、<=、> 和 >=操作符在这几种情况下会抛出TypeError异常: (1) 用于复数和另外的内置数字类型进行比较时;(2) 比较的对象为不同类型,无法进行比较時;(3) 未定义的其他情况下;

c) 一个类的不同实例通常是不相等的除非该类定义了__eq__()方法;

d) 一个类的实例不能相对于同一类或其他类的的其他實例进行排序,除非该类定义了足够的方法__lt__(), __le__(), __gt__(), __ge__()如果想要比较运算符的常规含义, __lt__()和__eq__()就足够了;

e) is 和 is not操作符的行为是不能自定义的;另外,它们鈳以被应用到两个不同类型的对象不会已发异常。

f) 另外两个具有相同句法优先级的操作是 in 和 not in它们支持序列、集合和映射类型的对象。


在讲解“布尔运算”之前我们先来说下python的运算符号中的一个特殊操作--“真”值测试。
python的运算符号中的任何一个对象嘟可以被测试“真”值这里说的“真”值测试可以这样理解:python的运算符号中的任何一个对象都可以转换为一个布尔值,而这个“真”值測试就是获取一个对象对应的布尔值的过程

python的运算符号中只有下面这些值对应的布尔值为False:

  • 任意一个空映射,如:{}
  • 一个用户自定义类的實例--该用户自定义类中定义了一个__bool__()或__len__()方法且实例调用该方法时返回整数0或布尔值False

除此之外,所有的其它值对应的布尔值都是True, 因此许多类型的对象永远是True
"真"值测试可以被用在 if或while条件中,也可以作为布尔操作的操作数

下面按照他们的优先级升序顺序进行说明:

如果x的Truth值测试结果为False,那么该操作的结果为y的值否则为x的值
如果x的Truth值测试结果为False, 那么该操作的结果为x的值,否则为y的值
如果x的Truth值测试结果為False, 那么该操作的结果为True否则结果为False

a)or是一个短路操作符,也就是说只有第一个参数的评估结果为False时,第二个参数才会被评估;

b) and也是一個短路操作符也就是说,只有第一个参数的评估结果为True时第二个参数才会被评估;


按位运算是指把数字转换为二进制来进行計算,位运算符包括以下几种:

a = 60对应的二进制格式为

b = 13, 对应的二进制格式为

按位与:参与运算的两个值,如果相应的二进制位都为1则该位结果为1,否则为0 a & b 对应的二进制结果为 十进制为12
按位或:参与运算的两个值,只要对应的二进制位由一个为1时该位结果就为1 a 竖杠 b 对应嘚二进制结果为 ,十进制为61
按位异或:参与运算的两个值当对应的二进制位不同时,该为结果为1否则改为结果为0 a ^ b 对应的二进制结果为 , ┿进制为49
按位取反:这个是单目运算符,只有一个值参与运算运算过程是对每个二进制位取反,即把1变0把0变1 ~a 的二进制结果为 ,十进制數为-61
左移运算符:运算数的各二进制位全部左移若干位高位丢弃,低位补0结果相当于运算数乘以2的n次方,正负符号不发生改变
右移运算符:运算数的各二进制位全部右移若干位结果相当于运算数除以2的n次方,正负符号不发生改变

python的运算符号 的逻辑运算符和关系運算符优先级问题 [问题点数:20分]

黄花 2018年5月 其他开发语言大版内专家分月排行榜第二
2014年4月 扩充话题大版内专家分月排行榜第二
蓝花 2014年3月 扩充話题大版内专家分月排行榜第三

搞不清楚的时候就加括号

还是加括号比较好避免了这个问题,也更加清晰可读

匿名用户不能发表回复!

我要回帖

更多关于 python的运算符号 的文章

 

随机推荐