精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

欧洲一级黄色片| 少妇人妻大乳在线视频| 国产精品无码一区二区桃花视频| 影视一区二区| 亚洲精品理论电影| 狠狠躁狠狠躁视频专区| 天堂va在线| 久久奇米777| 91中文字幕在线观看| wwwxxx亚洲| **女人18毛片一区二区| 日韩精品视频在线播放| 国产女同无遮挡互慰高潮91| 三级在线观看视频| 亚洲欧洲日韩综合一区二区| 精品一卡二卡三卡四卡日本乱码| 中文字幕黄色av| 国产欧美一级| 欧美成人精品在线| 69精品无码成人久久久久久| av综合网页| 欧美高清性hdvideosex| 91av资源网| 视频在线这里都是精品| 中文幕一区二区三区久久蜜桃| 91丨九色丨国产| 中文字幕日韩经典| 国产精品人人爽人人做我的可爱| 草民午夜欧美限制a级福利片| 国产精品一二三区在线观看| 波多野结衣一区二区三区免费视频| 欧美视频在线观看一区| 国产一区二区三区精彩视频| 男人添女人下部高潮视频在线观看| 中文字幕av一区 二区| 精品一区二区三区日本| 亚洲第一视频在线播放| 国产一区二区在线观看视频| 国产精品1234| www.欧美色| 久久久久久黄| 日本精品久久久| 国产精品美女毛片真酒店| 中出一区二区| 久久在线免费观看视频| 国产精品视频一区二区在线观看| 精品av一区二区| 亚洲欧美制服中文字幕| 久久国产精品无码一级毛片 | 国产精品亚洲欧美| 久久久久久国产免费| 欧美激情一区二区视频| 你懂的成人av| 欧美精品在线极品| 九九热这里有精品视频| 黄色另类av| 久久久久久高潮国产精品视| 麻豆亚洲av成人无码久久精品| 亚洲一区二区| 欧美激情va永久在线播放| 免费一级a毛片夜夜看| 亚洲一级电影| 538国产精品一区二区免费视频| 国产小视频在线免费观看| 一本久道久久久| 欧美一区三区三区高中清蜜桃| 好看的av在线| 日韩二区三区在线观看| 国产精品自产拍高潮在线观看| 中文字幕第一页在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产欧美日韩精品专区| 成人免费一区二区三区| 激情都市一区二区| 99精品国产高清一区二区| 婷婷在线观看视频| 久久老女人爱爱| 亚洲人成影视在线观看| 国产精品一区二区三区视频网站| 一区二区三区四区精品在线视频| 男女日批视频在线观看| 蜜臀国产一区| 欧美另类高清zo欧美| 亚洲国产精品第一页| 一区二区三区日本久久久| 一区二区三区国产在线观看| 国产人妻精品一区二区三区不卡| 精品成人一区| 国产精品久久综合av爱欲tv| 国产免费黄色录像| 91视频免费播放| 一区二区三区久久网| aa国产成人| 欧美揉bbbbb揉bbbbb| 免费在线观看日韩av| 精品一二三区| 久久久久久久爱| 国产91av在线播放| 国产成+人+日韩+欧美+亚洲| 日本一区视频在线观看| 肉体视频在线| 欧美亚洲精品一区| 稀缺小u女呦精品呦| 日本久久黄色| 91国产美女视频| 国产又粗又长又大视频| 91麻豆免费看| 狠狠干视频网站| 久久久成人av毛片免费观看| 精品成人免费观看| 精品在线观看一区| 国产精品久久777777毛茸茸| 91在线网站视频| 成人一区二区不卡免费| 亚洲国产精品一区二区久久| 亚洲欧美自拍另类日韩| 网友自拍一区| 欧美华人在线视频| 97免费观看视频| 久久九九久久九九| 自慰无码一区二区三区| 久久免费福利| 久久久精品国产网站| 亚洲 日本 欧美 中文幕| 成人高清免费观看| 无码人妻aⅴ一区二区三区日本| 欧美va在线观看| 亚洲精品视频免费| 日韩特黄一级片| 国产一区二区三区在线观看精品 | 欧美一卡二卡三卡四卡| 日本人亚洲人jjzzjjz| 国产亚洲精品bv在线观看| 成人三级在线| 黄色在线观看网站| 欧美色网一区二区| 在线观看日本中文字幕| 国产精品久久久亚洲一区| 国产精品日韩一区二区免费视频| 亚洲无线看天堂av| 日韩无一区二区| 青青草原在线免费观看| 国产精品一区二区久久不卡| 97超碰人人爱| 久久久久亚洲精品中文字幕| 久久久av亚洲男天堂| 91中文字幕在线播放| 国产精品网站导航| 中文字幕第100页| 久久香蕉国产| 国产一区二区丝袜高跟鞋图片| 成人免费视频| 在线成人av网站| 国产极品美女在线| 国产一区二区三区国产| 特色特色大片在线| 欧美黄色一级| 欧美极品少妇xxxxⅹ裸体艺术| 高潮毛片7777777毛片| 亚洲一二三四在线| 中文字幕丰满孑伦无码专区| 亚洲欧美久久久| 日本在线播放一区| 一区二区三区| 国外视频精品毛片| 亚洲aⅴ乱码精品成人区| 色综合久久久久综合体桃花网| 在哪里可以看毛片| 久久精品理论片| 糖心vlog在线免费观看| 国产成人tv| 欧美在线视频播放| 9191在线| 日韩精品自拍偷拍| 99视频在线看| 国产欧美一二三区| 午夜免费看视频| 精品电影一区| 欧美日韩大片一区二区三区 | 欧美老人xxxx18| 久久免费小视频| 91亚洲精华国产精华精华液| 香蕉视频禁止18| 欧美日韩亚洲一区三区 | 日韩欧美1区| 99精彩视频在线观看免费| 不卡av播放| 久久福利视频网| 视频国产在线观看| 91精品欧美综合在线观看最新 | av免费在线网站| 亚洲精品成人网| 国产精品久久久久久久久久久久久久久久久久 | 亚洲精品视频网上网址在线观看| 91 中文字幕| 大荫蒂欧美视频另类xxxx| 午夜激情福利电影| 99精品视频一区二区三区| 国产喷水theporn| 亚洲美女一区| 色中文字幕在线观看| 无码日韩精品一区二区免费| 91传媒在线免费观看| free欧美| 97国产suv精品一区二区62| 中文日本在线观看| 日韩精品欧美国产精品忘忧草| 国产又粗又长视频| 在线精品视频免费播放| 日韩手机在线观看| 一区二区三区在线免费| 欧美另类69xxxx| 久久婷婷国产综合国色天香 | 国产精品一区二区免费视频| 精品美女久久久久久免费| 破处女黄色一级片| 中文字幕欧美区| 亚欧洲乱码视频| 99国产一区二区三精品乱码| www.偷拍.com| 久久成人久久爱| 国产一级做a爰片久久| 亚洲一区国产一区| 99久久国产综合精品五月天喷水| 女主播福利一区| 久久国产精品免费观看| 91久久夜色精品国产按摩| 日本不卡久久| 免费精品国产的网站免费观看| 国模精品娜娜一二三区| 日韩一区网站| 91免费在线观看网站| 中文字幕日本一区| 91精品久久久久久久久久 | 性色av无码久久一区二区三区| 久久久久久久久久久久久女国产乱| 日本人dh亚洲人ⅹxx| 狠狠色狠狠色综合| 女同激情久久av久久| 美女网站色91| 成人性生交免费看| 蜜臀精品久久久久久蜜臀| 青青草精品视频在线观看| 久久久久久夜| 国产v亚洲v天堂无码久久久| 丝袜美腿亚洲综合| 久久久久久久片| 蜜桃av一区二区| 亚洲欧美自偷自拍另类| 久久精品国产精品亚洲综合| 黄色片视频在线| 精品一区二区免费在线观看| 污污网站免费观看| 国产一区二区在线看| 91精品国产高清91久久久久久| 成人免费视频播放| 黄色录像a级片| 久久久99久久| 成人一级黄色大片| 一区二区三区在线播放| 看片网站在线观看| 婷婷六月综合亚洲| 永久免费无码av网站在线观看| 一本大道综合伊人精品热热 | 欧美成人dvd在线视频| 色先锋久久影院av| 亚洲国产精品一区二区第一页| 欧美丰满日韩| 精品国产一区二区三区无码| 亚洲欧美不卡| www.久久久久久久久久久| 国产成人综合在线观看| www.免费av| 亚洲欧洲成人av每日更新| 久久国产在线视频| 日韩欧美在线视频| 一级黄色片在线观看| 欧美日韩久久久一区| 精品国产亚洲一区二区麻豆| 日韩电影免费观看在线观看| 日本在线人成| 国模精品视频一区二区三区| 成人久久网站| 国产私拍一区| 日韩在线综合| 久草视频国产在线| 蜜桃视频一区二区三区在线观看| 性生交大片免费看l| 久久久久久麻豆| 校园春色 亚洲| 色婷婷狠狠综合| 亚洲AV午夜精品| 一本大道久久加勒比香蕉| 女同一区二区免费aⅴ| 国产精品wwwwww| 超碰10000| 99久久激情| 天天夜碰日日摸日日澡性色av| 久久午夜精品| 亚洲最大视频网| 国产精品久久一级| 自拍偷拍欧美亚洲| 91精品免费在线观看| 欧美日韩伦理片| 欧美福利视频网站| 久久人体av| 久久久水蜜桃| 欧美日韩亚洲三区| 91国内在线播放| 91麻豆福利精品推荐| 免看一级a毛片一片成人不卡| 在线观看三级视频欧美| 秋霞av鲁丝片一区二区| 久久人人爽人人爽爽久久| 久久夜夜操妹子| 精品蜜桃传媒| 欧美日韩第一区| 黄色片免费网址| 国产精品污污网站在线观看| 亚洲精品1区2区3区| 日韩精品一区二区在线| 免费在线视频欧美| 国产精品扒开腿做爽爽爽视频 | 四虎永久在线精品免费一区二区| 在线精品一区| 中文字幕亚洲日本| 自拍偷在线精品自拍偷无码专区 | 日韩片电影在线免费观看| 一本色道88久久加勒比精品| 女人扒开双腿让男人捅| 18成人在线观看| 做爰视频毛片视频| 亚洲品质视频自拍网| 亚洲伊人av| 欧美日韩一区二区三区免费| 亚洲看片免费| 黄色在线免费播放| 亚洲国产精品天堂| 亚洲欧美另类日韩| 色综合91久久精品中文字幕 | 日本精品人妻无码77777| 欧美日韩国产一区| 日本欧美在线视频免费观看| 国产精品视频免费在线观看| 欧美系列电影免费观看| 午夜视频在线瓜伦| 国产精品网站导航| 中文字幕av资源| 久久九九热免费视频| 韩国三级成人在线| 国产在线拍揄自揄拍无码| 国产精品一区二区久久精品爱涩| 青娱乐国产在线视频| 欧美r级电影在线观看| av岛国在线| 欧美日本韩国在线| 麻豆freexxxx性91精品| 日韩欧美激情一区二区| 欧美freesex8一10精品| 无码播放一区二区三区| 久久久久久久电影| 最新中文字幕免费| 久热在线中文字幕色999舞| 亚洲国产精品免费视频| 国产成a人亚洲精v品在线观看| 成人av在线播放网站| 国产www在线| 神马久久久久久| 中文字幕区一区二区三| 日韩国产一级片| 国产丝袜欧美中文另类| 97成人在线观看| 欧美国产极速在线| 偷拍亚洲色图| www.超碰97.com| 亚洲国产一区在线观看| 视频一区二区在线播放| 国产精品视频色| 好吊一区二区三区| 国产肥白大熟妇bbbb视频| 欧美久久久久久久久| 青青草原国产在线| 免费在线一区二区| 韩国女主播成人在线| 日韩av在线电影| 中文字幕不卡在线视频极品| 日本精品视频| 狠狠热免费视频| 一区二区三区成人| 国产中文字幕在线视频| 亚洲xxxx做受欧美| 久久久久国产精品午夜一区| 亚洲一级生活片| 亚洲精品久久久久国产| 青娱乐极品盛宴一区二区| 日本欧美视频在线观看| 国产精品黄色在线观看| 日韩中文字幕免费观看| 成人啪啪免费看| 视频在线观看一区|