省略號也是對象
...
這是省略號,在Python中,一切皆對象。它也不例外。
在 Python 中,它叫做 Ellipsis 。
在 Python 3 中你可以直接寫…來得到這玩意。
>>>...
Ellipsis
>>>type(...)
'ellipsis'>
而在 python2 中沒有…這個語法,只能直接寫Ellipsis來獲取。
>>>Ellipsis
Ellipsis
>>>type(Ellipsis)
'ellipsis'>
它轉(zhuǎn)為布爾值時為真
>>>bool(...)
True
最后,這東西是一個單例。
>>>id(...)
4362672336
>>>id(...)
4362672336
這東西有啥用呢?據(jù)說它是Numpy的語法糖,不玩 Numpy 的人,可以說是沒啥用的。
在網(wǎng)上只看到這個 用...
代替 pass ,稍微有點用,但又不是必須使用的。
try:
1/0
exceptZeroDivisionError:
...
類的首字母不一定是大寫
在正常情況下,我們所編寫的所見到的代碼,好像都默許了類名首字母大寫,而實例用小寫的這一準(zhǔn)則。但這并不是強制性的,即使你反過來的也沒有關(guān)系。
但有一些內(nèi)置的類,首字母都是小寫,而實例都是大寫。
比如 bool 是類名,而 True,F(xiàn)alse 是其實例;
比如 ellipsis 是類名,Ellipsis是實例;
還有 int,string,float,list,tuple,dict 等一系列數(shù)據(jù)類型都是類名,它們都是小寫。
增量賦值的性能更好
諸如+=
和*=
這些運算符,叫做 增量賦值運算符。
這里使用用 += 舉例,以下兩種寫法,在效果上是等價的。
#第一種
a=1;a+=1
#第二種
a=1;a=a+1
+=
其背后使用的魔法方法是 __iadd__,如果沒有實現(xiàn)這個方法則會退而求其次,使用 __add__ 。
這兩種寫法有什么區(qū)別呢?
用列表舉例 a += b,使用 __add__ 的話就像是使用了a.extend(b),如果使用 __add__ 的話,則是 a = a+b,前者是直接在原列表上進行擴展,而后者是先從原列表中取出值,在一個新的列表中進行擴展,然后再將新的列表對象返回給變量,顯然后者的消耗要大些。
所以在能使用增量賦值的時候盡量使用它。
and 和or 的取值順序
and 和 or 是我們再熟悉不過的兩個邏輯運算符。而我們通常只用它來做判斷,很少用它來取值。
如果一個or表達式中所有值都為真,Python會選擇第一個值,而and表達式則會選擇第二個。
>>>(2or3)*(5and7)
14#2*7
如何修改解釋器提示符
這個當(dāng)做今天的一個小彩蛋吧。應(yīng)該算是比較冷門的,估計知道的人很少了吧。
正常情況下,我們在 終端下 執(zhí)行Python 命令是這樣的。
>>>foriinrange(2):
...print(i)
...
0
1
你是否想過>>>
和...
這兩個提示符也是可以修改的呢?
>>>importsys
>>>sys.ps1
'>>>'
>>>sys.ps2
'...'
>>>
>>>sys.ps2='----------------'
>>>sys.ps1='Python>>>'
Python>>>foriinrange(2):
----------------print(i)
----------------
0
1
審核編輯:湯梓紅
-
python
+關(guān)注
關(guān)注
56文章
4801瀏覽量
84865 -
解釋器
+關(guān)注
關(guān)注
0文章
103瀏覽量
6546
發(fā)布評論請先 登錄
相關(guān)推薦
評論