精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 為什么會有個奇怪的“...”對象?

開發(fā) 后端
在寫上一篇《Python 為什么要有 pass 語句?》時,我想到一種特別的寫法,很多人會把它當(dāng)成 pass 語句的替代。在文章發(fā)布后,果然有三條留言提及了它。

在寫上一篇《Python 為什么要有 pass 語句?》時,我想到一種特別的寫法,很多人會把它當(dāng)成 pass 語句的替代。在文章發(fā)布后,果然有三條留言提及了它。

[[335958]]

所謂特別的寫法就是下面這個:

  1. # 用 ... 替代 pass 
  2. def foo(): 
  3.  ... 

它是中文標點符號的半個省略號,也即由英文的 3 個點組成。如果你是第一次看到,很可能會覺得奇怪:這玩意是怎么回事?PS:如果你知道它,仔細看過本文后,你同樣可能會覺得奇怪!

1. 認識一下“...”內(nèi)置常量

事實上,它是 Python 3 中的一個內(nèi)置對象,有個正式的名字叫作——Ellipsis,翻譯成中文就是“省略號”。

更準確地說,它是一個內(nèi)置常量(Built-in Constant),是 6 大內(nèi)置常量之一(另外幾個是 None、False、True、NotImplemented、__debug__)。

關(guān)于這個對象的基礎(chǔ)性質(zhì),下面給出了一張截圖,你們應(yīng)該能明白我的意思:

“...“并不神秘,它只是一個可能不多見的符號型對象而已。用它替換 pass,在語法上并不會報錯,因為 Python 允許一個對象不被賦值引用。

嚴格來說, 這是旁門左道,在語義上站不住腳——把“...”或其它常量或已被賦值的變量放在一個空的縮進代碼塊中,它們是與動作無關(guān)的,只能表達出“這有個沒用的對象,不用管它”。

Python 允許這些不被實際使用的對象存在,然而聰明的 IDE 應(yīng)該會有所提示(我用的是Pycharm),比如告訴你:Statement seems to have no effect 。

但是“...”這個常量似乎受到了特殊對待,我的 IDE 上沒有作提示。

很多人已經(jīng)習(xí)慣上把它當(dāng)成 pass 那樣的空操作來用了(在最早引入它的郵件組討論中,就是舉了這種用法的例子)。但我本人還是傾向于使用 pass,不知道你是怎么想的呢?

2. 奇怪的 Ellipsis 和 ...

... 在 PEP-3100 中被引入,最早合入在 Python 3.0 版本,而 Ellipsis 則在更早的版本中就已包含。

雖然官方說它們是同一個對象的兩種寫法,而且說成是單例的(singleton),但我還發(fā)現(xiàn)一個非常奇怪的現(xiàn)象,與文檔的描述是沖突的:

如你所見,賦值給 ... 時會報錯SyntaxError: cannot assign to Ellipsis ,然而 Ellipsis 卻可以被賦值,它們的行為根本就不同嘛!被賦值之后,Ellipsis 的內(nèi)存地址以及類型屬性都改變了,它成了一個“變量”,不再是常量。

作為對比,給 True 或 None 之類的常量賦值時,會報錯SyntaxError: cannot assign to XXX,但是給 NotImplemented 常量賦值時不會報錯。

眾所周知,在 Python 2 中也可以給布爾對象(True/False)賦值,然而 Python 3 已經(jīng)把它們改造成不可修改的。

所以有一種可能的解釋:Ellipsis 和 NotImplemented 是 Python 2 時代的遺留產(chǎn)物,為了兼容性或者只是因為核心開發(fā)者遺漏了,所以它們在當(dāng)前版本(3.8)中還可以被賦值修改。

... 出生在 Python 3 的時代,或許在將來會完全取代 Ellipsis。目前兩者共存,它們不一致的行為值得我們注意。我的建議:只使用"..."吧,就當(dāng) Ellipsis 已經(jīng)被淘汰了。

3. 為什么要使用“...”對象?

接下來,讓我們回到標題的問題:Python 為什么要使用“...”對象?

這里就只聚焦于 Python 3 的“...”了,不去追溯 Ellipsis 的歷史和現(xiàn)狀。

之所以會問這個問題,我的意圖是想知道:它有什么用處,能夠解決什么問題?從而窺探到 Python 語言設(shè)計中的更多細節(jié)。

大概有如下的幾種答案:

(1) 擴展切片語法

官方文檔中給出了這樣的說明:

Special value used mostly in conjunction with extended slicing syntax for user-defined container data types.

這是個特殊的值,通常跟擴展的切片語法相結(jié)合,用在自定義的數(shù)據(jù)類型容器上。

文檔中沒有給出具體實現(xiàn)的例子,但用它結(jié)合__getitem__() 和 slice() 內(nèi)置函數(shù),可以實現(xiàn)類似于 [1, ..., 7] 取出 7 個數(shù)字的切片片段的效果。

由于它主要用在數(shù)據(jù)操作上,可能大部分人很少接觸。聽說 Numpy 把它用在了一些語法糖用法上,如果你在用 Numpy 的話,可以探索一下都有哪些玩法?

(2) 表達“未完成的代碼”語義

... 可以被用作占位符,也就是我在《Python 為什么要有 pass 語句?》中提到 pass 的作用。前文中對此已有部分分析。

有人覺得這樣很 cute,這種想法獲得了 Python 之父 Guido 的支持 :

(3) Type Hint 用法

Python 3.5 引入的 Type Hint 是“...”的主要使用場合。

它可以表示不定長的參數(shù),比如Tuple[int, ...] 表示一個元組,其元素是 int 類型,但數(shù)量不限。

它還可以表示不確定的變量類型,比如文檔中給出的這個例子:

  1. from typing import TypeVar, Generic 
  2.  
  3. T = TypeVar('T') 
  4.  
  5. def fun_1(x: T) -> T: ...  # T here 
  6. def fun_2(x: T) -> T: ...  # and here could be different 
  7.  
  8. fun_1(1)                   # This is OK, T is inferred to be int 
  9. fun_2('a')                 # This is also OK, now T is str 

T 在函數(shù)定義時無法確定,當(dāng)函數(shù)被調(diào)用時,T 的實際類型才被確定。

在 .pyi 格式的文件中,... 隨處可見。這是一種存根文件(stub file),主要用于存放 Python 模塊的類型提示信息,給 mypy、pytype 之類的類型檢查工具 以及 IDE 來作靜態(tài)代碼檢查。

(4) 表示無限循環(huán)

最后,我認為有一個非常終極的原因,除了引入“...”來表示,沒有更好的方法。

先看看兩個例子:

兩個例子的結(jié)果中都出現(xiàn)了“...”,它表示的是什么東西呢?

對于列表和字典這樣的容器,如果其內(nèi)部元素是可變對象的話,則存儲的是對可變對象的引用。那么,當(dāng)其內(nèi)部元素又引用容器自身時,就會遞歸地出現(xiàn)無限循環(huán)引用。

無限循環(huán)是無法窮盡地表示出來的,Python 中用 ... 來表示,比較形象易懂,除了它,恐怕沒有更好的選擇。

最后,我們來總結(jié)一下本文的內(nèi)容:

  • 是 Python 3 中的一個內(nèi)置常量,它是一個單例對象,雖然是 Python 2 中就有的 Ellipsis 的別稱,但它的性質(zhì)已經(jīng)跟舊對象分道揚鑣
  • 可以替代 pass 語句作為占位符使用,但是它作為一個常量對象,在占位符語義上并不嚴謹。很多人已經(jīng)在習(xí)慣上接受它了,不妨一用
  • 在 Python 中不少的使用場景,除了占位符用法,還可以支持擴展切片語法、豐富 Type Hint 類型檢查,以及表示容器對象的無限循環(huán)
  • 對大多數(shù)人來說,可能并不多見(有人還可能因為它是一種符號特例而排斥它),但它的存在,有些時候能夠帶來便利。希望本文能讓更多人認識它,那么文章的目的也就達成了~

 

責(zé)任編輯:趙寧寧 來源: Python貓
相關(guān)推薦

2021-05-28 08:01:00

JS原型概念

2017-03-09 11:15:18

LinuxRoot賬戶

2019-12-02 14:22:01

浪費云計算支出

2013-01-15 09:41:45

編程語言

2024-07-17 09:39:05

軟件版本號管理

2017-12-21 19:38:50

潤乾中間表

2021-12-20 14:42:39

程序員職業(yè)技術(shù)

2022-07-26 23:43:29

編程語言開發(fā)Java

2013-01-24 09:44:44

數(shù)據(jù)庫

2025-09-10 04:00:00

2022-08-02 18:37:24

BI系統(tǒng)快照表

2022-06-14 09:52:39

ArrayList初始化容量

2020-08-03 07:50:56

存儲對象存儲

2020-10-15 13:19:24

為什么會存在亂碼

2022-12-09 14:34:40

程序員工資離職

2016-11-09 19:50:43

對象存儲AWS S3

2022-01-10 10:05:33

鍵盤屏幕內(nèi)存

2020-03-31 16:30:09

JS語言ES 6

2020-04-02 09:01:54

JSES 6開發(fā)

2020-05-28 07:50:18

重排序happens-befCPU
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲精品成人少妇| 奇米色777欧美一区二区| 亚洲大胆美女视频| 欧美激情国产精品日韩| 岛国最新视频免费在线观看| 极品少妇一区二区三区精品视频 | 国产精品av在线| 国产成人av免费在线观看| 精品久久ai| 欧美日韩国产精品成人| 久久国产精品网| 成人不用播放器| 成人性生交大片免费看视频在线 | 国内精品伊人| 偷拍与自拍一区| 一区二区三区欧美在线| 香蕉视频免费看| 国产一区二区三区日韩 | 成人免费黄色| 天天综合色天天| 婷婷视频在线播放| 国产裸舞福利在线视频合集| 成人av网址在线| 成人精品视频99在线观看免费| 日韩精品国产一区二区| 国产精品毛片久久| 亚洲色图色老头| 精品国产一二区| 天堂久久午夜av| 好吊成人免视频| av在线观看地址| 日本三级视频在线播放| 久久久久国产成人精品亚洲午夜| 91精品国产一区二区三区动漫| 337p粉嫩色噜噜噜大肥臀| 在线成人www免费观看视频| 日韩中文在线视频| 欧美aaa级片| 国产不卡av一区二区| 亚洲精品在线一区二区| 伊人免费视频二| 国产原创一区| 欧美日韩你懂得| 噼里啪啦国语在线观看免费版高清版| 男人av在线播放| 亚洲福利视频导航| 日韩在线观看a| a级毛片免费观看在线| 亚洲视频狠狠干| 伊甸园精品99久久久久久| 福利片在线观看| 久久美女艺术照精彩视频福利播放| 成人国产1314www色视频| 国产av无码专区亚洲av麻豆| 国产在线精品国自产拍免费| 国产在线视频91| 国产又大又粗又长| 精东粉嫩av免费一区二区三区| 国产经典一区二区| 中日精品一色哟哟| 久久爱www久久做| 91精品久久久久| 97精品人妻一区二区三区| 久久中文欧美| 国产精品久久久久久久久免费| 国产亚洲欧美日韩高清| 青青草97国产精品免费观看| 国产美女被下药99| a天堂在线视频| 国产成人av一区| 国产一区高清视频| 深夜影院在线观看| 国产欧美日韩视频在线观看| 亚洲免费不卡| 在线xxxx| 岛国精品视频在线播放| 成人一区二区三| 国产福利91精品一区二区| 91麻豆精品久久久久蜜臀| 美女日批在线观看| 久久国产精品免费精品3p| 亚洲男人天堂网站| 国产视频精品免费| 影院欧美亚洲| 国产精品精品久久久| 99精品视频免费看| 97se亚洲国产综合自在线不卡| 欧美一区免费视频| 超碰电影在线播放| 欧美日韩激情美女| 天天干天天综合| 欧美区一区二区| 精品视频在线播放| 小嫩苞一区二区三区| 激情久久久久久久| 国产精品免费看久久久香蕉| 99国产揄拍国产精品| 2017欧美狠狠色| 无码人妻aⅴ一区二区三区日本| 97人澡人人添人人爽欧美| 在线区一区二视频| www.欧美com| 国产精品免费不| 九九久久精品一区| 波多野结衣网站| 国产精品夜夜嗨| 视频一区亚洲| 精精国产xxxx视频在线中文版| 91国模大尺度私拍在线视频| 永久看看免费大片| 精品久久国产| 午夜精品久久久久久99热软件| 91porny九色| 东方aⅴ免费观看久久av| 亚洲国产一区二区三区在线播| 欧洲黄色一区| 欧美挠脚心视频网站| 天堂久久久久久| 欧美国产三区| 国产精品欧美激情| 免费在线观看污视频| 亚洲第一主播视频| 成年人网站av| 久久久影院免费| 日本一区二区在线免费播放| 全部免费毛片在线播放一个| 综合精品久久久| wwwwww.色| 欧美男男gaytwinkfreevideos| 欧美激情啊啊啊| 国产精品一级视频| 国产精品三级av| 国产视频一区二区三区在线播放 | 欧美成人激情免费网| www.99re6| 美女一区二区视频| 日韩av一区二区三区美女毛片| 国产拍在线视频| 亚洲成avwww人| 日本黄色小说视频| 国产在线精品一区二区三区不卡| 亚洲日本精品国产第一区| 播放一区二区| 国产亚洲欧美日韩美女| 波多野结衣网站| 国产午夜精品久久久久久久| 国产亚洲精品网站| 亚欧洲精品视频在线观看| 性欧美xxxx| 五月婷婷在线观看视频| 欧美日韩精品在线| 成人网站免费观看| 亚洲在线观看| 欧美中日韩一区二区三区| 桃花岛成人影院| 一区三区二区视频| 一区二区国产欧美| 亚洲免费观看视频| 制服下的诱惑暮生| 99av国产精品欲麻豆| 久久久福利视频| 高清不卡av| 一区二区三区天堂av| 一区二区三区日| 亚洲欧美国产高清| 中文字幕乱视频| 欧美亚洲在线| 亚洲精品成人三区| 精品成人18| 国外成人在线直播| 黄色av网站在线看| 欧美日韩成人一区| 欧美三级日本三级| av成人老司机| 9久久婷婷国产综合精品性色| 成人三级视频| 99久久精品免费看国产四区| 国产网站在线| 亚洲新中文字幕| 国产精品久久久久久久久毛片 | 中文字幕一区二区三区5566| 亚洲国产中文在线二区三区免| 午夜精品久久久久久久99热| 国内精品在线视频| 欧美一区二区三区视频免费| 日韩经典在线观看| 国产精品卡一卡二卡三| 精品久久久久久无码人妻| 久久久久国产精品午夜一区| 在线观看成人一级片| 国内视频在线精品| 国产精品久久久久久久久久久不卡| 毛片在线不卡| 日韩精品免费视频| 国产人妻精品一区二区三| 午夜精品一区二区三区免费视频| avhd101老司机| 成人精品高清在线| 午夜在线观看av| 精品91视频| 精品久久免费观看| 神马午夜久久| 91久久久久久久| 综合久久2023| 色综合久久88色综合天天看泰| 国产综合在线观看| 欧美精品一区二区在线观看| 伊人精品一区二区三区| 黑人极品videos精品欧美裸| 91高清免费观看| 欧美国产精品一区二区三区| 日韩av手机在线播放| 国内精品写真在线观看| 国产精品无码人妻一区二区在线| 66视频精品| 午夜精品一区二区三区四区| 精品女人视频| 亚洲精品欧美一区二区三区| 精品国模一区二区三区| 高清欧美性猛交xxxx| 成人短视频在线观看| 中文字幕日韩精品在线观看| 亚州av在线播放| 欧美成人精品二区三区99精品| 在线观看免费观看在线| 色哟哟日韩精品| 久久夜色精品亚洲| 夜夜揉揉日日人人青青一国产精品| 成人午夜免费影院| 国产色爱av资源综合区| 日本xxx在线播放| www.成人网.com| 丰满人妻一区二区三区免费视频棣 | 欧美成人一级| 国产主播欧美精品| 欧美美女福利视频| 国产精品美女www| 欧美xxxxxx| 日韩免费不卡av| 美女100%一区| 国产成人精品久久亚洲高清不卡| gay欧美网站| 欧洲一区二区视频| 成人欧美大片| 国产成人精品久久久| 国产日韩另类视频一区| 国产精品h片在线播放| 午夜日韩成人影院| 国产成人在线视频| 午夜av成人| 国产精品亚洲美女av网站| 欧美激情不卡| 92看片淫黄大片看国产片| 成人在线视频区| 97久久夜色精品国产九色 | 黄色精品视频在线观看| 国产精品麻豆久久久| 免费在线观看黄色小视频| 自拍偷拍亚洲欧美日韩| 久久久久久久久久久久久女过产乱| 尤物在线观看一区| 免费一级特黄特色大片| 欧美日韩性生活视频| 成人免费视频国产免费| 欧美伦理视频网站| 国内精品国产成人国产三级| 亚洲国产成人91精品| 污污网站免费在线观看| 亚洲图片欧美日产| 欧美成人二区| 午夜精品一区二区三区视频免费看 | 日韩高清在线免费观看| 手机成人在线| 欧美激情一级片一区二区| 黄色免费福利视频| 美国十次了思思久久精品导航| 中文字幕在线视频一区二区三区| 成人综合婷婷国产精品久久| 国产高清自拍视频| 国产精品久久毛片a| 国产一级片网址| 在线一区二区三区四区| 国产精品久久影视| 日韩精品黄色网| 免费网站免费进入在线| 久久久亚洲福利精品午夜| 午夜无码国产理论在线| 亚洲精品欧美极品| 视频国产一区| 国产欧美123| 久久欧美肥婆一二区| 在线播放免费视频| 91亚洲国产成人精品一区二区三| 成人一级片免费看| 亚洲成人av资源| 一区二区美女视频| 日韩成人在线电影网| 黄色在线观看网站| 国产99久久精品一区二区永久免费| 99视频这里有精品| 久久综合一区| 影视一区二区| 日日碰狠狠丁香久燥| 成人午夜免费视频| 后入内射无码人妻一区| 亚洲地区一二三色| 国产绿帽刺激高潮对白| 亚洲色图av在线| 九色porny自拍视频在线播放| 91精品久久久久久久久青青| 一本久久青青| 免费看毛片的网址| 国模少妇一区二区三区| 亚洲精品午夜视频| 欧美日韩亚洲成人| 蜜桃av噜噜一区二区三区麻豆| 在线午夜精品自拍| 伊人久久国产| 国产精品一码二码三码在线| 小说区亚洲自拍另类图片专区| 蜜臀av午夜一区二区三区| 成人av综合在线| avove在线播放| 欧美日产国产精品| 福利在线播放| 日本精品免费一区二区三区| 久久夜色精品国产噜噜av小说| 福利在线小视频| 九色porny丨国产精品| 99在线视频免费| 欧美在线一区二区三区| 色哟哟在线观看| 2019av中文字幕| 另类图片第一页| 全黄性性激高免费视频| 国产成人精品影视| 久久一级黄色片| 日韩精品一区二区三区在线观看 | www.555国产精品免费| 亚洲色图都市小说| 国产精品人妻一区二区三区| 色综合伊人色综合网| 91亚洲精品| 天堂√在线观看一区二区| 丝袜国产日韩另类美女| 中文字幕一区二区三区人妻电影| 欧美午夜电影在线| 日产精品久久久久久久性色| 欧美在线视频播放| 自拍欧美一区| 性欧美极品xxxx欧美一区二区| 久久精品亚洲国产奇米99| 手机看片久久久| 亚洲午夜久久久久久久| 123成人网| 在线视频91| 国产精品资源站在线| 久草国产在线观看| 亚洲二区在线播放视频| 中国字幕a在线看韩国电影| 欧美另类高清视频在线| 视频精品一区二区| 中文字幕乱码av| 91精品国产手机| 久操av在线| 欧美激情论坛| 麻豆国产精品官网| 欧美黑人一级片| 亚洲国产欧美一区二区三区同亚洲 | 国产精品自产拍| 久久99亚洲精品| 台湾亚洲精品一区二区tv| 日本新janpanese乱熟| 国产精品久久二区二区| 亚洲男人第一天堂| 国产成人极品视频| 999精品视频| 亚洲妇女无套内射精| 岛国av一区二区| 日本在线免费网| 成人av影视在线| 日日摸夜夜添夜夜添亚洲女人| 网站永久看片免费| 精品美女在线播放| 日韩精品影院| 国内自拍中文字幕| 久久久亚洲精品石原莉奈 | 色吧亚洲日本| 亚洲精品9999| 99久久精品情趣| 亚洲最大成人av| 国外成人在线播放| 99精品网站| 欧美亚一区二区三区| 4438x成人网最大色成网站| 乱馆动漫1~6集在线观看| 一区二区免费在线观看| 99久久er热在这里只有精品15| 一个人看的www日本高清视频| 久久久免费精品|