print(0 and 1) # =>0,0等同于False
print(False and 1) # =>False
print(-1 and 1) # =>1
print(1 or False) # =>1,非零等同于True
print(True or False)# =>True
print(-1 or 0) # =>-1
and:前面为假(0 或者 False)则表达式为假,否则表达式为后面的值;
or:前面为真(非 0 或者非 False)则表达式为前面的值,否则表达式为后面的值;
优先级:not>and>or
print(1 and 0 or not False) #=>True
print( not False or 1 and 0) #=>True
print( 1 or not True and 0) #=>1
list1=[1000,3,5]
list2=[1000,4,5]
print(list1[0] is list2[0])
tuple1=(1000,3,5)
tuple2=(1000,4,5)
print(tuple1[0] is tuple2[0])
dict1={6:1000,2:3,3:5}
dict2={1:1000,2:4,3:7}
print(dict1[6] is dict2[1])
list1=[1000,3,5]
list2=[1000,3,5]
print(list1 is list2)
tuple1=(1000,3,5)
tuple2=(1000,3,5)
print(tuple1 is tuple2)
dict1={1:1000,2:3,3:5}
dict2={1:1000,2:3,3:5}
print(dict1 is dict2)
1043Python3 数字(Number)
文中对于 _ 提到,它代表了上一次的输出结果,"用户应该将其视为只读变量",实际情况是你也可以对于_ 赋值,_=10 是没有毛病的,但这样的结果会导致你在之后调用 _ 的时候全部变成了10,除非你 del _。
对于round:
Python 所谓的奇进偶弃,因为浮点数的表示在计算机中并不准确,用的时候可能要注意一下。
还可以参考这篇文章: Python 中关于 round 函数的小坑
1042Python3 运算符
深刻理解 and、or 逻辑运算符:
优先级:not>and>or
1041Python3 运算符
纠正上面 beihangld 评论关于“整数中 1 的数量”问题:由源码分析可知,Python3 整数对象存储为无符号数加上符号位标志,所以不存在“负数”补码形式,因此,计算 “1” 的数量需要按去符号后的无符号数:
另外,Python3 无长整,整数长度原则上不限,所以不能以假定的 32 位处理。
1040Python3 运算符
关于 is 和 == 的标识问题
(1)只要是变量的值相同,标识都相同,没有-5~256的限制,看下面的例子:
输出结果为:
(2)同样的如果是负数,仍然没有上述限制:
输出结果为:
(3)列表也是一样的,只要是列表项数值一样,那么标识也是一样的。例子如下:
输出结果为:
(4)元组的标识是跟着变量名的,变量名不一样,标识也不一样,上例子:
输出结果为:
(5)字典和列表是一样的,只要是列表项数值一样,那么标识也是一样的。例子如下:
输出结果为:
1039Python3 运算符
== 和 is 的区别
is 判断两个对象是否为同一对象, 是通过 id 来判断的; 当两个基本类型数据(或元组)内容相同时, id 会相同, 但并不代表 a 会随 b 的改变而改变。
== 判断两个对象的内容是否相同, 是通过调用 __eq__() 来判断的。
1、当列表,元组,字典中的值都引用 a,b 时,总是返回 True,不受 a,b 值大小的影响
输出结果为:
2、当不引用a,b,直接用具体值来测试时,列表,字典,不受值大小影响,返回True,元组则受 256 值范围的影响,超出范围则地址改变,返回 False。
输出结果为:
3、当直接用列表、元组、字典本身来测试时,刚好相反,元组返回 True,列表,字典返回 False。
输出结果为: