先看一个示例:
>>> False == False == True
False
你知道这个表达式为什么会会返回 False 吗?
它的运行原理与下面这个类似:
if 80 < score <= 90:
print("成绩良好")
如果你还是不明白,那我再给你整个第一个例子的等价写法。
>>> False == False and False == True
False
这个用法叫做链式比较。
and 和 or 是我们再熟悉不过的两个逻辑运算符,在 Python 也有它的妙用。
当一个 or 表达式中所有值都为真,Python会选择第一个值
当一个 and 表达式 所有值都为真,Python 会选择最后一个值。
示例如下:
>>>(2 or 3) * (5 and 6 and 7)
14 # 2*7
>>> a = [1,2]
>>> b = [3,4]
>>> c = [5,6]
>>>
>>> sum((a,b,c), [])
[1, 2, 3, 4, 5, 6]
为避免整数频繁申请和销毁内存空间,Python 定义了一个小整数池 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。
以下代码在终端Python环境下测试,如果在IDE中测试,由于 IDE 的影响,效果会有所不同。
>>> a = -6
>>> b = -6
>>> a is b
False
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a = 257; b = 257
>>> a is b
True
问题又来了:最后一个示例,为啥是True?
因为当你在同一行里,同时给两个变量赋同一值时,解释器知道这个对象已经生成,那么它就会引用到同一个对象。如果分成两行的话,解释器并不知道这个对象已经存在了,就会重新申请内存存放这个对象。
全部0条评论
快来发表一下你的评论吧 !