谈谈Python那些不为人知的冷知识

你在Python的学习中有没有遇到过一些好玩又冷门的知识吗?我最近整理了一些,给大家分享一下。

省略号也是对象

...这是省略号,在Python中,一切皆对象,它也不例外。在Python中,它叫做Ellipsis,在Python 3中你可以直接写…来得到这玩意。

>>>...

Ellipsis

>>>type(...)

<class'ellipsis'>

而在2中没有…这个语法,只能直接写Ellipsis来获取。

>>>Ellipsis

Ellipsis

>>>type(Ellipsis)

<type'ellipsis'>

>>>

它转为布尔值时为真

>>>bool(...)

True

最后,这东西是一个单例。

>>>id(...)

4362672336

>>>id(...)

4362672336

这东西有啥用呢?据说它是Numpy的语法糖,不玩Numpy的人,可以说是没啥用的。

类的首字母不一定是大写

在正常情况下,我们所编写的所见到的代码,好像都默许了类名首字母大写,而实例用小写的这一准则,但这并不是强制性的,即使你反过来也没有关系。

但有一些内置的类,首字母都是小写,而实例都是大写。

比如bool是类名,而True,False是其实例;比如ellipsis是类名,Ellipsis是实例;还有int,string,float,list,tuple,dict等一系列数据类型都是类名,它们都是小写。

增量赋值的性能更好

诸如+=和*=这些运算符,叫做增量赋值运算符。这里使用用+=举例,以下两种写法,在效果上是等价的。

#第一种

a=1;a+=1

#第二种

a=1;a=a+1

+=其背后使用的魔法方法是__iadd__,如果没有实现这个方法则会退而求其次,使用__add__。

这两种写法有什么区别呢?

用列表举例a+=b,使用__add__的话就 像是使用了a.extend(b),如果使用__add__的话,则是a=a+b,前者是直接在原列表上进行扩展,而后者是先从原列表中取出值,在一个新的列表中进行扩展,然后再将新的列表对象返回给变量,显然后者的消耗要大些。

所以在能使用增量赋值的时候尽量使用它。

and和or的取值顺序

and和or是我们再熟悉不过的两个逻辑运算符。而我们通常只用它来做判断,很少用它来取值。

如果一个or表达式中所有值都为真,Python会选择第一个值,而and表达式则会选择第二个。

>>>(2 or 3)*(5 and 7)

14#2*7

继大型Python400集第一季 【基础篇】Python基础 (115集)之后,第二季 【提高篇】Python深入和扩展学习视频也已经全部录制完毕,本周公布“文件处理”这一章,一共18个课程。

欢迎关注微信公众号:IT百战程序员~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,803评论 0 10
  • 感恩冥想 1、感恩辟谷老师带着我们一起练习养生功法 2、感恩同修姐姐分享苹果给我 3、感恩冠晴姐姐送我们回来 4、...
    栾宜阅读 113评论 0 0
  • 自我感觉良好反而在现实中不太容易实现自我的目标。 当你的目标被别人承认,在你心里就好像这个目标已经实现了。
    Mr_chens阅读 360评论 0 0
  • 在了解了家常菜中常用的炒,焖烹饪手法后,再就是给大家总结一下实用的香料秘籍啦。 香料篇: 笔者做菜常用的香料基本...
    晨曦与雨阅读 323评论 0 0
  • 春姐姐来了 春风姐姐也来了 她吹呀吹 吹得绿绿的叶子冒出来了 花姐姐也张开了美丽的花瓣 连调皮的竹子娃娃也探出尖尖...
    陈厚华阅读 245评论 0 3