谈谈Python那些不为人知的冷知识(一)

本文转载自公众号Python编程时光(ID:Python-Time)
小明在日常Code中遇到一些好玩,冷门的事情,通常都会记录下来。现在已经积攒了一些了,最近打算整理一波,发出来给大家补补。一篇只分享五个,有时间了就整理。
省略号也是对象
...?这是省略号,在Python中,一切皆对象。它也不例外。在?Python?中,它叫做?Ellipsis?。在?Python?3?中你可以直接写…来得到这玩意。
>>>?...
Ellipsis
>>>?type(...)
< class?'ellipsis'>
而在?2?中没有…这个语法,只能直接写Ellipsis来获取。
>>>?Ellipsis
Ellipsis
>>>?type(Ellipsis)'ellipsis' >
>>>
它转为布尔值时为真
>>>?bool(...)
True
最后,这东西是一个单例。
>>>?id(...)
4362672336
>>>?id(...)
4362672336
这东西有啥用呢?据说它是Numpy的语法糖,不玩?Numpy?的人,可以说是没啥用的。
在网上只看到这个 用?...?代替?pass?,稍微有点用,但又不是必须使用的。
try:
????1/0
except?ZeroDivisionError:
????...
类的首字母不一定是大写
在正常情况下,我们所编写的所见到的代码,好像都默许了类名首字母大写,而实例用小写的这一准则。但这并不是强制性的,即使你反过来的也没有关系。
但有一些内置的类,首字母都是小写,而实例都是大写。
比如?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
如何修改解释器提示符
这个当做今天的一个小彩蛋吧。应该算是比较冷门的,估计知道的人很少了吧。
正常情况下,我们在?终端下?执行Python?命令是这样的。
>>>?for?i?in?range(2):
...?????print?(i)
...
0
1
你是否想过?>>>?和?...?这两个提示符也是可以修改的呢?
>>>?import?sys??????????????????????
>>>?sys.ps1?????????????????????????
'>>>?'??????????????????????????????
>>>?sys.ps2?????????????????????????
'...?'??????????????????????????????
>>>?????????????????????????????????
>>>?sys.ps2?=?'----------------?'?????????????????
>>>?sys.ps1?=?'Python编程时光>>>'???????
Python编程时光>>>for?i?in?range(2):?????
----------------????print?(i)????????????????????
----------------?????????????????????????????????
0???????????????????????????????????
1
(本文为AI科技大本营转载文章,转载请联系原作者)
◆
实习生招募
◆
推荐阅读:

?点击“阅读原文”,查看更多精彩文章。
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675









AI100
