python基础知识点(三)

描述

简洁而优雅的链式比较

先看一个示例:

>>> False == False == True
False

你知道这个表达式为什么会会返回 False 吗?

它的运行原理与下面这个类似:

if 80 < score <= 90:
    print("成绩良好")

如果你还是不明白,那我再给你整个第一个例子的等价写法。

>>> False == False and False == True
False

这个用法叫做链式比较。

and 和 or 的短路效应

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?

因为当你在同一行里,同时给两个变量赋同一值时,解释器知道这个对象已经生成,那么它就会引用到同一个对象。如果分成两行的话,解释器并不知道这个对象已经存在了,就会重新申请内存存放这个对象。

 
审核编辑:汤梓红
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分