天跟大家分享的又是python的“為什么”系列的文章哦。大家都知道python是一款強大的數據分析工具,我們平常工作和生活中也總是會用到。但是對于python的一些基本理論卻是一知半解,希望通過小編今天給大家分享的這篇:Python 為什么會有個奇怪的“...”對象?的文章,使大家對于python有進一步的了解。
所謂特別的寫法就是下面這個:
# 用 ... 替代 pass
def foo():
...
它是中文標點符號的半個省略號,也即由英文的 3 個點組成。如果你是第一次看到,很可能會覺得奇怪:這玩意是怎么回事?PS:如果你知道它,仔細看過本文后,你同樣可能會覺得奇怪!
事實上,它是 Python 3 中的一個內置對象,有個正式的名字叫作——Ellipsis,翻譯成中文就是“省略號”。
更準確地說,它是一個內置常量(Built-in Constant),是 6 大內置常量之一(另外幾個是 None、False、True、NotImplemented、__debug__)。
關于這個對象的基礎性質,下面給出了一張截圖,你們應該能明白我的意思:
兩個例子的結果中都出現了“...”,它表示的是什么東西呢?
對于列表和字典這樣的容器,如果其內部元素是可變對象的話,則存儲的是對可變對象的引用。那么,當其內部元素又引用容器自身時,就會遞歸地出現無限循環引用。
無限循環是無法窮盡地表示出來的,Python 中用 ... 來表示,比較形象易懂,除了它,恐怕沒有更好的選擇。
最后,我們來總結一下本文的內容:
... 是 Python 3 中的一個內置常量,它是一個單例對象,雖然是 Python 2 中就有的 Ellipsis 的別稱,但它的性質已經跟舊對象分道揚鑣
... 可以替代 pass 語句作為占位符使用,但是它作為一個常量對象,在占位符語義上并不嚴謹。很多人已經在習慣上接受它了,不妨一用
... 在 Python 中不少的使用場景,除了占位符用法,還可以支持擴展切片語法、豐富 Type Hint 類型檢查,以及表示容器對象的無限循環
... 對大多數人來說,可能并不多見(有人還可能因為它是一種符號特例而排斥它),但它的存在,有些時候能夠帶來便利。希望本文能讓更多人認識它,那么文章的目的也就達成了~
手機瀏覽
全國
19974831731





