小明在平常Code中遇到一些好玩,冷門的事情,一般都會記錄下來。python
如今已經積攢了一些了,最近打算整理一波,發出來給你們補補。一篇只分享五個,有時間了就整理。不想錯過的,千萬記得關注一下。編程
...
這是省略號,在Python中,一切皆對象。它也不例外。ruby
在 Python 中,它叫作 Ellipsis 。app
在 Python 3 中你能夠直接寫…來獲得這玩意。性能
>>> ...
Ellipsis
>>> type(...)
<class 'ellipsis'>
而在 2 中沒有…這個語法,只能直接寫Ellipsis來獲取。ui
>>> Ellipsis
Ellipsis
>>> type(Ellipsis)
<type 'ellipsis'>
>>>
它轉爲布爾值時爲真spa
>>> bool(...)
True
最後,這東西是一個單例。code
>>> id(...)
4362672336
>>> id(...)
4362672336
這東西有啥用呢?聽說它是Numpy的語法糖,不玩 Numpy 的人,能夠說是沒啥用的。orm
在網上只看到這個 用 ...
代替 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,使用 __iadd__ 的話就像是使用了a.extend(b),若是使用 __add__ 的話,則是 a = a+b,前者是直接在原列表上進行擴展,然後者是先從原列表中取出值,在一個新的列表中進行擴展,而後再將新的列表對象返回給變量,顯而後者的消耗要大些。
因此在能使用增量賦值的時候儘可能使用它。
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
小明會繼續堅持寫這個系列,若是你以爲寫得還能夠的,不防關注一下,以避免掉隊,若是能夠的話,請分享給身邊的小夥伴們。