前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈 Python 那些不为人知的冷知识(一)

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

作者头像
张俊红
发布2019-10-10 15:18:05
4390
发布2019-10-10 15:18:05
举报
文章被收录于专栏:张俊红张俊红
好文分享第20篇

接下来的几天给大家分享一些 Python 中好玩但比较冷门的知识点,一篇只分享五个,不想错过的,千万记得关注一下。

01 省略号也是对象


... 这是省略号,在Python中,一切皆对象。它也不例外。

在 Python 中,它叫做 Ellipsis 。

在 Python 3 中你可以直接写…来得到这玩意。

代码语言:javascript
复制
>>> ...
Ellipsis
>>> type(...)
<class 'ellipsis'>

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

代码语言:javascript
复制
>>> Ellipsis
Ellipsis
>>> type(Ellipsis)
<type 'ellipsis'>
>>>

它转为布尔值时为真

代码语言:javascript
复制
>>> bool(...)
True

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

代码语言:javascript
复制
>>> id(...)
4362672336
>>> id(...)
4362672336

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

在网上只看到这个 用 ... 代替 pass ,稍微有点用,但又不是必须使用的。

代码语言:javascript
复制
try:
    1/0
except ZeroDivisionError:
    ...

02 类的首字母不一定是大写


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

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

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

03 增量赋值的性能更好


诸如 +=*= 这些运算符,叫做 增量赋值运算符。

这里使用用 += 举例,以下两种写法,在效果上是等价的。

代码语言:javascript
复制
# 第一种
a = 1 ; a += 1

# 第二种
a = 1; a = a + 1

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

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

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

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

04 and 和or 的取值顺序


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

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

代码语言:javascript
复制
>>>(2 or 3) * (5 and 7)
14  # 2*7

05 如何修改解释器提示符


这个当做今天的一个小彩蛋吧。应该算是比较冷门的,估计知道的人很少了吧。

正常情况下,我们在 终端下 执行Python 命令是这样的。

代码语言:javascript
复制
>>> for i in range(2):
...     print (i)
...
0
1

你是否想过 >>>... 这两个提示符也是可以修改的呢?

代码语言:javascript
复制
>>> import sys                      
>>> sys.ps1                         
'>>> '                              
>>> sys.ps2                         
'... '                              
>>>                                 
>>> sys.ps2 = '---------------- '                 
>>> sys.ps1 = 'Python编程时光>>>'       
Python编程时光>>>for i in range(2):     
----------------    print (i)                    
----------------                                 
0                                   
1                                

-END-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 俊红的数据分析之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 省略号也是对象
  • 02 类的首字母不一定是大写
  • 03 增量赋值的性能更好
  • 04 and 和or 的取值顺序
  • 05 如何修改解释器提示符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档