首页 > 编程语言 > 详细

Python基础-运算符

时间:2019-08-06 01:29:36      阅读:90      评论:0      收藏:0      [点我收藏+]

Python支持的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符

 


 

运算符的优先级

技术分享图片

 


 

算术运算符

技术分享图片


 

比较运算符

技术分享图片


 

赋值运算符

简写形式相当于把算术运算符移到等号左边,然后略去等号右边的c。

技术分享图片


 

位运算符

相当于把数字看做二进制的形式进行逻辑运算。

 a=60 b=13

技术分享图片

注意取反运算符~:

比如5的二进制形式是0000 0101,~5的二进制就是1111 1010 ,这是一个负数,而负数在计算机中是以补码(符号位不变,其余位取反再加1)的形式存储,所以~5的真实二进制形式是1000 0101+0000 0001=1000 0110=十进制6,加上符号就是-6。

同理,~-5,首先-5的原码是 1000 0101,负数是以补码的形式存储,所以-5的补码是1111 1010+0000 0001=1111 1011,然后取反运算符号按位逐一取反,得到0000 0100,即十进制正数4。

按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了。

另外左移或者右移运算符,不是循环式的高位或者低位移出范围就丢弃。


 

逻辑运算符

技术分享图片

1 print(0 and 1)      # =>0,0等同于False
2 print(False and 1)  # =>False
3 print(-1 and 1)     # =>1
4 print(1 or False)   # =>1,非零等同于True
5 print(True or False)# =>True
6 print(-1 or 0)      # =>-1

 

and注解:

  1. 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一;
  2. 在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值;
  3. 如果布尔上下文中的某个值为假,则 and 返回第一个假值。

or注解:

  1. 使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值;
  2. 如果所有的值都为假,or 返回最后一个假值;
  3. 注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值。

and-or结合使用:

  1. 结合了前面的两种语法,推理即可。
  2. 为加强程序可读性,最好与括号连用,例如:
    1 (1 and x) or y

 

成员运算符

技术分享图片


 

身份运算符

常用在比较两个对象的存储单元。

技术分享图片

 1 #!/usr/bin/python3
 2  
 3 a = 20
 4 b = 20
 5  
 6 if ( a is b ):
 7    print ("1 - a 和 b 有相同的标识")
 8 else:
 9    print ("1 - a 和 b 没有相同的标识")
10  
11 if ( id(a) == id(b) ):
12    print ("2 - a 和 b 有相同的标识")
13 else:
14    print ("2 - a 和 b 没有相同的标识")
15  
16 # 修改变量 b 的值
17 b = 30
18 if ( a is b ):
19    print ("3 - a 和 b 有相同的标识")
20 else:
21    print ("3 - a 和 b 没有相同的标识")
22  
23 if ( a is not b ):
24    print ("4 - a 和 b 没有相同的标识")
25 else:
26    print ("4 - a 和 b 有相同的标识")

 结果

1 a 和 b 有相同的标识
2 a 和 b 有相同的标识
3 a 和 b 没有相同的标识
4 a 和 b 没有相同的标识

 关于id()的补充:

  • 在 脚本式编程中:
1 a=500000
2 b=500000
3 c=500000
4 print(id(a))
5 print(id(b))
6 print(id(c))

得到的结果是

1 14408976
2 14408976
3 14408976
  • 而在交互式编程中,三者是不等的。

技术分享图片

原因:在交互式环境中,编译器会有一个小整数池的概念,会把(-5,256)间的数预先创建好,而当超过这个范围的时候,变量就会指向不同的对象了,因此地址也会不一样。

技术分享图片

 

Python基础-运算符

原文:https://www.cnblogs.com/zhangyanlong/p/11306288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!