以前看到一個文章,講的是一些關於Python的冷知識,有興趣的能夠看一下喲~html
在Python中,一切皆對象,...
也不例外。在Python3中...
叫作Ellipsis。python
>>> type(...) <class 'ellipsis'>
而在python2中沒有…
這個語法。只能直接使用Ellipsis來獲取:性能
>>> type(Ellipsis) <class 'ellipsis'>
它轉爲布爾值時爲真:code
>>> bool(...) True
那麼這個...
到底有什麼用呢,聽說它是Numpy的語法糖,不使用Numpy的人能夠說是沒什麼用了。 或者你可使用 ... 代替 pass ,如:htm
def test(): pass # 能夠替換成 def test(): ...
在正常狀況下,咱們所編寫的所見到的代碼,好像都默許了類名首字母大寫,而實例用小寫的這一準則。但這並非強制性的,即便你反過來的也沒有關係。對象
但有一些內置的類,首字母都是小寫,而實例都是大寫。blog
好比 bool 是類名,而 True,False 是其實例; 好比 ellipsis 是類名,Ellipsis是實例; 還有 int,string,float,list,tuple,dict 等一系列數據類型都是類名,它們都是小寫。ip
諸如 +=
和 *=
這些運算符,叫作增量賦值運算符。get
這裏使用用 +=
舉例,如下兩種寫法,在效果上是等價的。string
# 第一種 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表達式則會選擇第二個。
>>>(1 or 10) * (2 and 5) 5 # 1*5
正常狀況下,咱們在終端下執行Python 命令是這樣的。
>>> for i in range(3): ... print (i) ... 0 1 2
其實 >>>
和 ...
這兩個提示符也是能夠修改:
>>> import sys >>> sys.ps1 '>>> ' >>> sys.ps2 '... ' >>> >>> sys.ps2 = '................' >>> sys.ps1 = 'aaa>>>' aaa>>>for i in range(3): ................ print (i) ................ 0 1 2