python冷知识_python冷知识
省略號也是對象
在python中一切皆對象,省略號(...)也是一個對象注意:只能是三個點的省略號
在python中叫做Ellipsis
在python3中能直接得到它
print(...)
print(type(...))
Ellipsis
而在python2中沒有這個,只能通過Ellipsis來獲取
print Ellipsis
print type(Ellipsis)
它轉成布爾值為真
print(bool(...))
True
它還是一個單例
print(id(...))
print(id(...))
print(id(...))
print(id(...))
1435611440
1435611440
1435611440
1435611440
這東西有啥用呢?據說它是Numpy的語法糖,不玩 Numpy 的人,可以說是沒啥用的。
在網上只看到這個 用 … 代替 pass ,稍微有點用,但又不是必須使用的。
奇怪的字符串
示例一
示例二
示例三
and 和 or 的取值順序
and 和 or 是我們再熟悉不過的兩個邏輯運算符。而我們通常只用它來做判斷,很少用它來取值。
如果一個python表達式中所有值都為真,or會選擇第一個值,而and表達式則會選擇第二個。
如果一個python表達式中所有值有一個為假,or會選擇第二個值,而and表達式則會選擇第一個。
如果一個python表達式中所有值有都為假,or會選擇第二個值,而and表達式則會選擇第一個。
print(2 or 3)
print(2 and 3)
2
3
訪問類中的私有方法
大家都知道,類中可供直接調用的方法,只有公有方法(protected類型的方法也可以,但是不建議)。也就是說,類的私有方法是無法直接調用的。但是是可以直接調用的
class People:
def __speak(self):
print('hello')
def call_speak(self):
self.__speak()
tim=People()
tim.call_speak()
tim._People__speak()
hello
hello
時有時無的切片異常
這是個簡單例子
lis=[1,2,3]
print(lis[5])
執行一下,和我們預期的一樣,會拋出索引異常。
但是今天要說的肯定不是這個,而是一個你可能會不知道的冷知識。
來看看,如下這種寫法就不會報索引異常,它會返回一個空列表:
lis=[1,2,3]
print(lis[5:])
[]
兩次 return
我們都知道,try…finally… 語句的用法,不管try里面是正常執行還是報異常,最終都能保證finally能夠執行。
同時,我們又知道,一個函數里只要遇到 return 函數就會立馬結束。
基于以上這兩點,我們來看看這個例子,到底運行過程是怎么樣的?
def text():
try:
return 1
finally:
return 0
print(text())
0
驚奇的發現,在try 里的return居然不起作用。
原因是,在try…finally…語句中,try中的return會被直接忽視,因為要保證 finally 能夠執行。
for 死循環
for 循環可以說是 基礎得不能再基礎的知識點了。
但是如果讓你用 for 寫一個死循環,你會寫嗎?
這是個開放性的問題,在往下看之前,建議你先嘗試自己思考,你會如何解答。
好了,如果你還沒有思路,那就來看一下這個解法:
for i in iter(int,1):
print('1')
是不是懵逼了。iter 還有這種用法?這為啥是個死循環?
這真的是個冷知識,關于這個知識點,你如果看中文網站,可能找不到相關資料。
還好你可以通過 IDE 看py源碼里的注釋內容,介紹了很詳細的使用方法。
原來iter有兩種使用方法,通常我們的認知是第一種,將一個列表轉化為一個迭代器。
而第二種方法,他接收一個 callable對象,和一個sentinel 參數。第一個對象會一直運行,直到它返回 sentinel 值才結束。
那int 呢,這又是一個知識點,int 是一個內建方法。通過看注釋,可以看出它是有默認值0的。你可以在終端上輸入int() 看看是不是返回0。
由于int() 永遠返回0,永遠返回不了1
所以這個 for 循環會沒有終點。一直運行下去。
intern機制
字符串類型作為Python中最常用的數據類型之一,Python解釋器為了提高字符串使用的效率和使用性能,做了很多優化.
例如:Python解釋器中使用了 intern(字符串駐留)的技術來提高字符串效率,什么是intern機制?就是同樣的字符串對象僅僅會保存一份,放在一個字符串儲蓄池中,是共用的,當然,肯定不能改變,這也決定了字符串必須是不可變對象。
總結
以上是生活随笔為你收集整理的python冷知识_python冷知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习训练的时候gpu占用0_26秒单
- 下一篇: python无参数装饰器_Python装