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

Python中有趣的Ellipsis對象

開發(fā) 后端
在你輸入了三個點之后,Python 解釋器非但不會報錯,反而還會返回給你「Ellipsis」這么一個信息。那么這個有趣的東西是什么呢?來看一下吧。

[[335494]]

 什么是Ellipsis

在 Python 中你可能有時候會看到一個奇怪的用法,就像是這樣: 

  1. >>> ...  
  2. Ellipsis 

在你輸入了三個點之后,Python 解釋器非但不會報錯,反而還會返回給你「Ellipsis」這么一個信息。那么這個有趣的東西是什么呢?

查閱 Python 官方文檔后可以看到,它是一個**「內(nèi)置常量」**(Built-in Constant)。經(jīng)常用于對用戶自定義的容器數(shù)據(jù)類型進行切片用法的擴展。

這也就意味著它可能是會作為一個「小眾且另類」的語法糖來使用,但如果你用于 Python 中的容器數(shù)據(jù)類型(比如列表)進行切片索引時,可能會引發(fā)錯誤: 

  1. >>> nums = list(range(10))  
  2. >>> nums  
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
  4. >>> nums[...]  
  5. Traceback (most recent call last):  
  6.   File "<stdin>", line 1, in <module>  
  7. TypeError: list indices must be integers or slices, not ellipsis 

除此之外,如果你使用的是 Python 2 的解釋器,那么壓根就不支持 Ellipsis 的用法,從一開始輸入時就報錯: 

  1. $ python2  
  2. WARNING: Python 2.7 is not recommended.   
  3. This version is included in macOS for compatibility with legacy software.   
  4. Future versions of macOS will not include Python 2.7.   
  5. Instead, it is recommended that you transition to using 'python3' from within Terminal.  
  6. Python 2.7.16 (default, Nov  9 2019, 05:55:08)   
  7. [GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s on darwin  
  8. Type "help", "copyright", "credits" or "license" for more information.  
  9. >>> ...  
  10.   File "<stdin>", line 1  
  11.     ...  
  12.     ^  
  13. SyntaxError: invalid syntax 

雖然說在列表中使用 Ellipsis 會報錯,但是碰到這種情況你會發(fā)現(xiàn)解釋器返回給你的是這樣的東西: 

  1. >>> nums = [1,2,3]  
  2. >>> nums  
  3. [1, 2, 3]  
  4. >>> nums[1] = nums  
  5. >>> nums  
  6. [1, [...], 3] 

可以看到,這里我們將 nums 中的第二個元素替換成自身,就會形成不斷地遞歸嵌套賦值,而解釋器最后直接給出了頭尾兩個元素之外,其他全部元素都會被 ... 所囊括在內(nèi)。

根據(jù) Python 官方的另一處文檔,Ellipsis 本身也不支持任何操作,僅僅只是一個單例對象(Singleton)

誰能想到,Guido van Rossum 這么一位被人稱為「仁慈的獨裁者」的 Python 之父采納 Ellipsis 的原因竟然是因為:有人認為三個省略號的寫法可愛。(原文為:「Some folks thought it would be cute to be able to write incomplete code like this」)

應(yīng)用

要說這個看起來「雞肋」的 Ellipsis 類型對象沒有用,這個說法似乎也不正確。因為它作為一種奇怪的語法糖也被應(yīng)用到了某些地方。

Numpy 中的切片

雖然官方說 Ellipsis 主要用于用戶自定義容器類型的切片操作,但是在我搜索了許久之后發(fā)現(xiàn)用 Ellipsis 來實現(xiàn)所謂的切片操作的貌似只有 Numpy。

使用 Python 做數(shù)據(jù)分析、挖掘或機器學習相關(guān)的朋友一定對 Numpy 高性能的科學計算庫并不陌生。在 Numpy 中我們真正的使用 Ellipsis 來進行切片索引: 

  1. >>> import numpy as np  
  2. >>> arr = np.arange(9).reshape((3,3))  
  3. >>> arr 
  4.  array([[0, 1, 2],  
  5.        [3, 4, 5],  
  6.        [6, 7, 8]]) 

需要注意的是,Ellipsis 主要是對二維以上的數(shù)組才起作用: 

  1. >>> arr[...,1:2]  
  2. array([[1],  
  3.        [4],  
  4.        [7]])  
  5. >>> arr[2, ...]  
  6. array([6, 7, 8]) 

從結(jié)果中我們看到,Ellipsis 三個省略號的寫法其實就等價于 arr[:, 1:2] 冒號的寫法。但是在使用過程中 Ellipsis 只能出現(xiàn)一次: 

  1. >>> ndarr = np.arange(24).reshape((2,3,4))  
  2. >>> ndarr  
  3. array([[[ 0,  1,  2,  3],  
  4.         [ 4,  5,  6,  7],  
  5.         [ 8,  9, 10, 11]],  
  6.        [[12, 13, 14, 15],  
  7.         [16, 17, 18, 19],  
  8.         [20, 21, 22, 23]]])  
  9. >>> ndarr[:, :, :]  
  10. array([[[ 0,  1,  2,  3],  
  11.         [ 4,  5,  6,  7],  
  12.         [ 8,  9, 10, 11]],  
  13.        [[12, 13, 14, 15],  
  14.         [16, 17, 18, 19],  
  15.         [20, 21, 22, 23]]])  
  16. >>> ndarr[..., ..., ...]  
  17. Traceback (most recent call last):  
  18.   File "<stdin>", line 1, in <module>  
  19. IndexError: an index can only have a single ellipsis ('...') 

Ellipsis 在 Numpy 中出現(xiàn)的意義在于,當你的數(shù)組是高維的數(shù)組時,那么可以直接使用它來作為選取其他維度的等價寫法,以下例子來源于 Numpy 官方文檔: 

  1. >>> z = np.arange(81).reshape(3,3,3,3)  
  2. >>> z[1,...,2] # 等價于 z[1, :,:, 2]  
  3. array([[29, 32, 35],  
  4.        [38, 41, 44],  
  5.        [47, 50, 53]]) 

Type Hint 類型注解

自從 PEP 484 之后,Python 解釋器開始支持類型注解。所謂的類型注解無非就是在 Python 實際代碼中能像注釋那樣對當中的一些參數(shù)或返回值添加類型注釋,就像是這樣: 

  1. def add(x: int, y: int) -> int:  
  2.     return x + y 

如果你是有使用過 Java 或者 Go 這類對類型注解要求較為嚴格的編譯型語言,那么相信對此并不陌生,無論是變量還是方法,都要寫上對應(yīng)的類型以防編譯報錯;但即便沒有接觸過這類編譯型語言也不要緊,將其理解為注釋即可,這樣的注釋是能被編輯器或 IDE 所支持,在你要查看函數(shù)定義或文檔時會給予提示。

但是 Type Hint 僅僅只是一種「協(xié)定」,告訴別人你的方法里參數(shù)是如何、最后返回的是什么僅此而已,無論是加與不加都不會影響最終代碼的效果,影響的僅僅只是代碼的可讀性罷了。

如果你的方法有多個返回值,我們不可能對每個返回值的類型都寫上注解,因此這時 Ellipsis 對象就派上了用場。根據(jù)官方文檔給出的說明,我們完全可以像這樣來進行類型注解: 

  1. from typing import Tuple  
  2. def get_many_value(  
  3.     a:int, b:int, c:int,   
  4.     d:int, e:int, f:int  
  5. ) -> Tuple[int, ...]:  
  6.     return [a+b, c+d, e+f] 

這樣的寫法本質(zhì)上就是 *args 的作用,表示同類型的可變長度元組。如果你將 Tuple 換成是 List,那么解釋器會報錯,因為 *args 在方法中的表現(xiàn)就是元組,那么作為注解的 Ellipsis 也應(yīng)如此。這可能也就說明為什么在 Tuple 注解中不報錯了。

FastAPI 中的必選參數(shù)

目前正流行開來的高性能 Web 框架 FastAPI 中,也應(yīng)用了 Ellipsis。它用以表示參數(shù)是必填項,這在 Swagger 頁面更能直觀體現(xiàn)。 

  1. # pip install fastapi  
  2. # pip install uvicorn  
  3. from fastapi import FastAPI, Query  
  4. app = FastAPI()  
  5. @app.get('/greetWithOutEllipsis')  
  6. async def greet(name: str = None):  
  7.     if name:  
  8.         return {"info": f"Welcome! {name}"}  
  9.     return {"info": f"Welcome to FastAPI!"}  
  10. @app.get('/greetWithEllipsis')  
  11. async def greet(name: str = Query(..., min_length=2)):  
  12.     if name:  
  13.         return {"info": f"Welcome! {name}"}  
  14.     return {"info": f"Welcome to FastAPI!"}  
  15. if __name__ == "__main__":  
  16.     import uvicorn  
  17.     uvicorn.run(app, port = 5000

啟動服務(wù)之后,在瀏覽器中輸入 http://127.0.0.1:5000/docs 便能進入到服務(wù)的 Swagger 頁面中,在上述例子中如果 name 參數(shù)并非是個必要的參數(shù)時,在 Swagger 頁面中不會看到任何標識,即便我們不帶上 name 參數(shù)也能進行請求: 

非必要參數(shù)

但當我們加上了一個 Query() 方法,并將其 Ellipsis 對象丟到當中時,不僅會給參數(shù)加上 required 的標識,同時還對傳入的字符串長度進行了限制。

必要參數(shù)

除了參數(shù)之外,在 FastAPI 中你還可以在請求體、路徑、字段等多個地方使用 Ellipsis 對象。

「偽」 pass 寫法

Ellipsis 有時候還可以作為 pass 的一種「偽」寫法,比如這樣: 

  1. def greet():  
  2.     ... #等價于 pass 

這其實就和 # 注釋符號與六個引號的長字符串注釋類似。但實際上僅僅只是一種取巧的方法,實際上我們可以將 ... 替換成任何值或?qū)ο螅?None、1、True 等,因為在方法中并沒有顯示聲明返回的對象,所以無論我們寫什么最后的效果都是一樣的。

但使用 Ellipsis 對象來作為 pass 關(guān)鍵字的替代品從「視覺」上來說或許還有點「意猶未盡」的意思。

當然如果在你和同事協(xié)作時,隨手寫下這樣一個省略號,沒準隱含著你對同事 Coding 的無奈,或者是對禿頭的憂愁(逃) 

 

責任編輯:龐桂玉 來源: Python中文社區(qū)
相關(guān)推薦

2010-03-12 10:30:18

Python語言

2023-08-13 16:32:12

JavaScript

2021-03-15 08:15:42

ES2021語言開發(fā)

2009-10-23 14:22:59

Windows 7微軟隱藏功能

2016-12-20 11:35:52

編程語言開源項目

2014-12-09 12:35:11

人工智能機器學習開源項目

2010-05-14 10:55:04

java對象序列化

2022-10-10 23:19:02

Python腳本語言工具庫

2017-08-08 16:04:30

Python圖片處理文章提取器

2009-04-30 16:21:37

VB.NET通用對象列表

2022-01-23 14:08:52

PythonPygame

2020-03-29 20:27:51

Python函數(shù)開發(fā)

2022-12-28 08:59:11

2025-03-19 09:55:17

2014-09-19 11:17:48

面試題

2010-07-17 01:03:13

CMD Telnet

2023-07-14 22:36:42

Node.jsStorage

2016-10-21 10:15:53

2023-03-13 08:47:06

CSS數(shù)學函數(shù)

2024-10-25 08:30:55

NumPyPandasMatplotlib
點贊
收藏

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

欧美色蜜桃97| 免费欧美电影| 26uuu亚洲| 国产精品久久二区| 日韩欧美综合视频| 婷婷精品在线观看| 欧美精品v国产精品v日韩精品 | 五月天福利视频| 日韩av中文字幕一区二区三区| 久久精品国产99国产精品澳门| 国产精品九九视频| 99精品女人在线观看免费视频| 一区二区欧美国产| 午夜精品福利一区二区| 欧美一区二不卡视频| 蜜臀久久99精品久久久久久9| 欧美激情视频网站| 少妇高潮在线观看| 一区二区导航| 精品福利av导航| 久久久精品高清| 日本综合字幕| 午夜免费久久看| 中国老女人av| 网友自拍视频在线| 国产午夜精品福利| 国产伦精品一区二区三区免费视频 | 亚洲激情五月| 亚洲天堂免费视频| 你懂的在线观看网站| 精品国产亚洲日本| 欧美另类一区二区三区| 农村妇女精品一二区| 2020av在线| 亚洲综合av网| 日本一本草久p| 成人a在线视频免费观看| 中文成人av在线| 日本不卡一区二区三区在线观看| 三级小视频在线观看| 成人美女在线视频| 草莓视频一区| www.国产三级| 国产精品18久久久| 91青青草免费观看| 国产喷水吹潮视频www| 韩国av一区二区三区| 国产色婷婷国产综合在线理论片a| 狠狠人妻久久久久久| 国产亚洲精品v| 97视频免费在线观看| 日韩精品在线不卡| 亚洲区国产区| 欧美在线视频导航| 黄色污污网站在线观看| 久久中文精品| 国产成人一区二区三区小说| 人人妻人人爽人人澡人人精品| 久久久久久久欧美精品| 欧美最近摘花xxxx摘花| 青青艹在线观看| 久久国产麻豆精品| 91夜夜揉人人捏人人添红杏| 超碰在线观看99| 成人动漫在线一区| 久精品国产欧美| 国产在线黄色| 国产精品国产自产拍高清av| 992tv成人免费观看| 在线午夜影院| 精品福利在线视频| 成年人在线看片| 国产一区二区三区四区五区3d| 欧美日韩高清影院| 亚洲熟女乱综合一区二区| 爱爱精品视频| 亚洲深夜福利网站| 永久免费看mv网站入口| 国内精品亚洲| 日本精品视频网站| av在线资源观看| 97超碰欧美中文字幕| 亚洲精品中文字幕乱码三区不卡 | 1区2区3区国产精品| 日韩久久久久久久久久久久| 中国字幕a在线看韩国电影| 欧美性猛交xxxx黑人交| 国产一级二级av| 日本欧美韩国国产| 久久精品视频亚洲| 国产日产精品一区二区三区| 麻豆成人在线观看| 韩国成人一区| 久久久久久国产精品免费无遮挡| 亚洲国产三级在线| 欧美性猛交xxx乱久交| 秋霞影院一区| 一本色道久久88亚洲综合88| 麻豆一区二区三区精品视频| 日韩电影在线一区二区| 国产成人精品福利一区二区三区| 成人免费黄色网页| 亚洲成av人片观看| 911福利视频| 神马影视一区二区| 午夜精品久久久久久久久久久久| 在线观看免费观看在线| 99热这里都是精品| 丰满女人性猛交| 日韩漫画puputoon| 日韩成人在线视频| 久操免费在线视频| 麻豆91精品视频| 久久一区二区精品| 日本一本在线免费福利| 555www色欧美视频| 第一次破处视频| 国产亚洲高清视频| 国产综合av一区二区三区| av黄在线观看| 欧美日韩亚洲综合一区二区三区| 亚洲精品理论片| 在线看片日韩| 成人黄动漫网站免费| 免费在线视频欧美| 欧美日韩在线免费视频| 久久久亚洲av波多野结衣| 亚洲香蕉网站| 成人3d动漫一区二区三区91| gogogogo高清视频在线| 欧美日韩一区二区在线观看视频 | 亚洲色图在线看| 成年人在线观看视频免费| 亚洲精品国模| 欧美在线免费视频| 日韩一二三四| 欧美性黄网官网| 免费观看一级一片| 亚洲综合99| 久久99精品国产99久久| av免费不卡国产观看| 亚洲精品一区二区三区精华液 | 国产三级精品三级观看| 麻豆免费精品视频| 五月天色一区| 日韩国产一二三区| 日韩在线观看你懂的| 91精品中文字幕| 综合久久久久久久| 精品国产午夜福利在线观看| 午夜久久免费观看| 亚洲在线免费观看| 精精国产xxxx视频在线中文版| 日韩美女一区二区三区四区| 久久中文字幕无码| 成人av综合在线| 男女激情无遮挡| 色天下一区二区三区| 青青在线视频一区二区三区| 欧美日韩免费做爰大片| 91成人在线精品| 一级片黄色录像| 国产精品综合久久| 精品国产av无码一区二区三区| 豆花视频一区二区| 欧美亚洲国产精品| jyzzz在线观看视频| 制服丝袜一区二区三区| 久久久精品人妻一区二区三区四| 成人免费视频视频| 99久久激情视频| 午夜精品毛片| 久久99国产精品| 日韩第二十一页| 欧美激情视频给我| 国模精品一区二区| 日韩视频永久免费| 在线观看日本视频| 亚洲丝袜美腿综合| 添女人荫蒂视频| 韩国av一区二区三区在线观看| 大胆欧美熟妇xx| 欧美伦理在线视频| 99在线观看| 欧美黄色三级| 久久久久久久亚洲精品| 青草久久伊人| 欧美一区二区三区系列电影| 天堂网免费视频| 亚洲伊人伊色伊影伊综合网| 黄色三级生活片| 成人手机电影网| 午夜久久福利视频| 久久久精品性| 欧美高清中文字幕| 97国产精品| 精品午夜一区二区| 麻豆国产精品| 国产精品日韩专区| 欧亚在线中文字幕免费| 久久久国产成人精品| 精品美女视频在线观看免费软件| 精品国产一区二区在线观看| 99成人精品视频| 欧美日韩性生活视频| 国产精品成人免费观看| 2024国产精品视频| 久久久久亚洲av无码网站| 美国三级日本三级久久99| 北条麻妃在线视频观看| 欧美ab在线视频| 中文字幕乱码一区二区三区| 国产精品午夜一区二区三区| 国产欧美在线一区二区| 精品视频成人| 国产精品羞羞答答| 日韩成人av电影| 97视频人免费观看| segui88久久综合9999| 欧美成人合集magnet| 日本黄色片在线观看| 亚洲图中文字幕| 日本电影一区二区在线观看| 欧美tickling网站挠脚心| 国产熟女一区二区三区四区| 欧美性色欧美a在线播放| 亚洲第一在线播放| 婷婷成人激情在线网| 青青草偷拍视频| 亚洲免费视频成人| 美女福利视频在线观看| ㊣最新国产の精品bt伙计久久| 91l九色lporny| 国产亚洲一区二区在线观看| 久久久久久国产精品无码| 99精品桃花视频在线观看| 制服丝袜在线第一页| 丁香婷婷综合网| 日本少妇xxxx软件| 高清日韩电视剧大全免费| 伊人av在线播放| 国产精品系列在线播放| 三级网站免费看| 国产精品综合在线视频| 色欲欲www成人网站| 成人爽a毛片一区二区免费| 白嫩情侣偷拍呻吟刺激 | 精品人妻一区二区三区四区| 久久精品一区四区| 婷婷综合在线视频| 亚洲天堂a在线| 欧美成人精品一区二区免费看片| 一区二区三区毛片| 日韩欧美亚洲国产| 欧美性生交大片免费| www.com亚洲| 欧美日韩视频第一区| 国产又粗又猛又黄| 欧美一级黄色片| 欧美 日韩 国产 成人 在线| 亚洲国产毛片完整版| 欧美日本韩国一区二区| 在线播放国产一区中文字幕剧情欧美| √天堂资源地址在线官网| 麻豆国产va免费精品高清在线| 宅男网站在线免费观看| 97涩涩爰在线观看亚洲| 欧美不卡高清一区二区三区| 成人黄色av播放免费| 97青娱国产盛宴精品视频| 精品乱码一区二区三区| 欧美三级伦理在线| 久久人妻无码一区二区| 亚洲自啪免费| jizz18女人| 波多野结衣精品在线| 亚洲一二三精品| 亚洲一区在线播放| 好吊色在线视频| 欧美一二三四区在线| 亚洲aⅴ在线观看| 日韩在线免费av| 超碰中文在线| 91精品国产综合久久久久久久久| 日本一区二区三区播放| 欧美精品一区三区在线观看| 天天做天天爱天天综合网| 欧美,日韩,国产在线| 久久成人免费网| 久久久久亚洲AV成人无码国产| 国产拍欧美日韩视频二区| 激情四射综合网| 在线视频一区二区三区| 亚洲美女性生活| 日韩亚洲综合在线| 午夜av不卡| 99在线看视频| 日韩三级在线| 欧美日韩亚洲一| 国产精品白丝av| 亚洲久久久久久久| 亚洲国产精品天堂| 一级成人免费视频| 精品一区二区三区电影| 欧美videos另类精品| 国产女精品视频网站免费| 亚洲精品国模| 精品无码国产一区二区三区av| 美国三级日本三级久久99| 久久久亚洲av波多野结衣| 亚洲影院理伦片| 国产又黄又大又粗的视频| 亚洲色图综合久久| 蜜桃视频m3u8在线观看| 2022国产精品| 91精品国产91久久综合| 日本人视频jizz页码69| 久久久久久久一区| 美日韩一二三区| 亚洲国产精品小视频| 午夜伦理在线视频| 91九色国产视频| 91中文字幕精品永久在线| 手机在线成人免费视频| 久久色中文字幕| 毛片视频网站在线观看| 亚洲精品久久久一区二区三区| 香蕉久久aⅴ一区二区三区| 成人综合网网址| 欧美电影免费播放| 国产原创精品在线| 婷婷综合伊人| 欧美激情中文字幕在线| 成人国产综合| 午夜精品区一区二区三 | 日本在线视频www| 97se亚洲国产综合自在线不卡| 日本三级欧美三级| 亚洲成人网久久久| 国产盗摄——sm在线视频| 国产无套精品一区二区| 99在线|亚洲一区二区| 中文字幕在线播放视频| 天天综合网天天综合色| 天堂中文在线8| 日本sm极度另类视频| 国产91精品对白在线播放| 男人女人黄一级| 中文在线资源观看网站视频免费不卡 | av福利精品| 国产精品入口免费视频一| 日韩精品诱惑一区?区三区| 亚洲视频一二三四| 亚洲欧美激情视频在线观看一区二区三区 | 国产欧美另类| 91精品人妻一区二区| 在线观看不卡视频| 欧美性天天影视| 99九九视频| 亚洲经典在线| 亚洲久久久久久久| 欧美日韩一区二区在线观看视频| 国产视频一区二区| 国产在线视频欧美一区二区三区| 亚洲在线观看| 青青操在线播放| 日韩一区二区三| 欧美男男tv网站在线播放| 欧洲一区二区日韩在线视频观看免费| 免费成人美女在线观看| 青娱乐在线视频免费观看| 亚洲黄页视频免费观看| 欧美大片1688网站| 91网站在线观看免费| 91丨九色丨蝌蚪丨老版| 91国产免费视频| 欧美精品18videosex性欧美| 欧美猛男同性videos| 涩多多在线观看| 精品久久久国产| 日本中文字幕伦在线观看| 国产伦一区二区三区色一情| 丝袜脚交一区二区| 曰本女人与公拘交酡| 亚洲欧美国内爽妇网| 成人免费91| 亚洲乱码中文字幕久久孕妇黑人| 国产精品久久久久久久久图文区| 亚洲国产成人一区二区| 国产精品久久视频| 亚洲人成免费| 最新日韩免费视频| 精品亚洲一区二区三区在线观看| 亚洲免费一区| 日韩精品无码一区二区三区免费| 亚洲天堂中文字幕| 国模精品一区二区| 精品日本一区二区| 国产精品亚洲人在线观看| 羞羞色院91蜜桃|