最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Ellipsis的使用實戰(zhàn)

 更新時間:2025年07月16日 10:08:14   作者:alden_ygq  
Ellipsis是Python中的一個內(nèi)置常量,本文主要介紹了Python Ellipsis的使用實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Ellipsis 是 Python 中的一個內(nèi)置常量(單例對象),表示省略號(...)。它在 Python 中有多種用途,尤其在 NumPy、類型提示和自定義類中經(jīng)常出現(xiàn)。本文將深入解析 Ellipsis 的用法、原理及實戰(zhàn)技巧。

一、基礎(chǔ)概念與語法

1. 本質(zhì)與表示

  • Ellipsis 是一個內(nèi)置常量,類型為 ellipsis。
  • 可通過字面量 ... 或 Ellipsis 訪問。
print(Ellipsis)  # 輸出: ...
print(type(Ellipsis))  # 輸出: <class 'ellipsis'>
print(Ellipsis is ...)  # 輸出: True

2. 唯一實例

  • Ellipsis 是單例對象,所有對 Ellipsis 的引用都指向同一個對象。
a = ...
b = Ellipsis
print(a is b)  # 輸出: True

二、核心應(yīng)用場景

1. NumPy 多維數(shù)組切片

  • 在 NumPy 中,Ellipsis 用于表示 “所有剩余維度”,簡化多維數(shù)組切片。
import numpy as np

arr = np.array([
    [[1, 2], [3, 4]],
    [[5, 6], [7, 8]]
])  # 形狀: (2, 2, 2)

# 等效操作
print(arr[0, ...])  # 等價于 arr[0, :, :]
print(arr[..., 0])  # 等價于 arr[:, :, 0]

2. 類型提示中的無限參數(shù)

  • 在類型提示中,Ellipsis 用于表示可變參數(shù)的類型。
from typing import Callable

# 表示接受任意參數(shù)并返回 int 的函數(shù)
def func(callback: Callable[..., int]) -> None:
    result = callback(1, 2, 3)  # 回調(diào)函數(shù)可接受任意參數(shù)
    print(result)

3. 存根函數(shù)與占位符

  • 在代碼開發(fā)中,Ellipsis 可作為占位符,表示 “代碼待實現(xiàn)”。
def todo_function():
    ...  # 等價于 pass,但更明確表示“待實現(xiàn)”

# 等效于
def todo_function():
    pass

4. 自定義類中的特殊方法

  • 通過實現(xiàn) __getitem__ 等方法,可在自定義類中支持 Ellipsis。
class MyData:
    def __getitem__(self, key):
        if key is Ellipsis:
            return "處理所有數(shù)據(jù)"
        return f"處理 {key}"

data = MyData()
print(data[...])  # 輸出: 處理所有數(shù)據(jù)
print(data[1])    # 輸出: 處理 1

三、高級用法與實戰(zhàn)

1. 函數(shù)重載與類型分支

  • 在類型檢查工具(如 mypy)中,Ellipsis 可用于函數(shù)重載的分支條件。
from typing import overload

@overload
def process_data(data: int) -> int: ...
@overload
def process_data(data: str) -> str: ...

def process_data(data):
    if isinstance(data, int):
        return data * 2
    return data.upper()

2. 異步生成器類型提示

  • 在異步生成器中,Ellipsis 表示異步迭代的元素類型。
from typing import AsyncGenerator

async def async_generator() -> AsyncGenerator[int, ...]:
    for i in range(3):
        yield i
        await asyncio.sleep(1)

3. 元編程與描述符

  • 在元編程中,Ellipsis 可用于創(chuàng)建靈活的描述符或元類。
class Config:
    def __get__(self, instance, owner):
        if instance is None:
            return self
        return instance._config.get(self.name, ...)  # 使用 Ellipsis 表示默認值

    def __set_name__(self, owner, name):
        self.name = name

四、常見問題與解決方案

1. 混淆 Ellipsis 與 None

  • 區(qū)別:
    • None 表示 “空值”。
    • Ellipsis 表示 “省略” 或 “所有剩余部分”。
# 錯誤示例:用 None 代替 Ellipsis 進行 NumPy 切片
arr = np.array([1, 2, 3])
try:
    arr[None]  # 這里 None 表示新增維度,而非 Ellipsis 的含義
except:
    pass

# 正確示例
arr[...]  # 獲取整個數(shù)組

2. 在普通 Python 列表中使用 Ellipsis

  • Python 列表不支持 Ellipsis 切片,需轉(zhuǎn)換為 NumPy 數(shù)組。
my_list = [1, 2, 3, 4]
try:
    my_list[...]  # 報錯:TypeError
except TypeError:
    arr = np.array(my_list)
    print(arr[...])  # 輸出: [1 2 3 4]

3. 作為函數(shù)參數(shù)默認值

  • 避免直接使用 Ellipsis 作為默認值,建議使用 None 并在函數(shù)內(nèi)判斷。
def func(param=None):
    if param is None:
        # 處理默認情況
        pass
    else:
        # 處理傳入值
        pass

五、總結(jié)

Ellipsis 的核心應(yīng)用場景:

  • NumPy 多維數(shù)組切片:簡化復(fù)雜切片操作。
  • 類型提示:表示可變參數(shù)或異步生成器類型。
  • 占位符:在未完成的代碼中作為明確的占位標記。
  • 自定義類:通過實現(xiàn)特殊方法支持 Ellipsis 語法。

掌握 Ellipsis 能讓你在處理復(fù)雜數(shù)據(jù)結(jié)構(gòu)、類型系統(tǒng)和框架開發(fā)時更加得心應(yīng)手。雖然它的使用場景相對特定,但在合適的場景下能極大提升代碼的可讀性和簡潔性。

到此這篇關(guān)于Python Ellipsis的使用實戰(zhàn)的文章就介紹到這了,更多相關(guān)Python Ellipsis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python字符串替換實例分析

    Python字符串替換實例分析

    這篇文章主要介紹了Python字符串替換的方法,實例對比分析了單個字符替換與字符串替換的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下
    2015-05-05
  • Python Pillow 圖像處理庫詳解(常用Pillow函數(shù)及其參數(shù))

    Python Pillow 圖像處理庫詳解(常用Pillow函數(shù)及其參數(shù))

    Pillow,原名PIL(Python Imaging Library),是一個功能強大的Python圖像處理庫,支持多種格式,提供豐富的圖像操作功能,如旋轉(zhuǎn)、縮放、顏色轉(zhuǎn)換等,以及易于使用的API,Pillow支持廣泛的圖像文件格式,并提供圖像過濾、繪制等功能
    2024-09-09
  • Python MySQL數(shù)據(jù)庫基本操作及項目示例詳解

    Python MySQL數(shù)據(jù)庫基本操作及項目示例詳解

    這篇文章主要介紹了Python連接MySQL數(shù)據(jù)庫后的一些基本操作,并以銀行管理系統(tǒng)項目為例,為大家具體介紹了一下部分功能的實現(xiàn),文中的示例代碼具有一定的學(xué)習(xí)價值,感興趣的可以了解一下
    2021-12-12
  • Python中的線程操作模塊(oncurrent)

    Python中的線程操作模塊(oncurrent)

    這篇文章介紹了Python中的線程操作模塊(oncurrent),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python利用ElementTree庫處理XML的完全指南

    Python利用ElementTree庫處理XML的完全指南

    Python作為一種廣泛應(yīng)用的編程語言,提供了多種庫來支持XML處理,使得開發(fā)者能夠更加便捷和高效地處理XML數(shù)據(jù),本章將對Python中常用的XML處理庫進行概述,包括它們的特性和適用場景,為讀者選擇合適的庫提供參考,需要的朋友可以參考下
    2025-07-07
  • python3實現(xiàn)tailf命令的示例代碼

    python3實現(xiàn)tailf命令的示例代碼

    本文主要介紹了python3實現(xiàn)tailf命令的示例代碼,tail -f 是一個linux的操作命令.其主要的是會把文件里的最尾部的內(nèi)容顯顯示在屏幕上,并且不斷刷新,只要文件有變動就可以看到最新的文件內(nèi)容,感興趣的可以了解一下
    2023-11-11
  • 樹莓派與PC端在局域網(wǎng)內(nèi)運用python實現(xiàn)即時通訊

    樹莓派與PC端在局域網(wǎng)內(nèi)運用python實現(xiàn)即時通訊

    這篇文章主要為大家詳細介紹了樹莓派與PC端在局域網(wǎng)內(nèi)運用python實現(xiàn)即時通訊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Opencv 圖片的OCR識別的實戰(zhàn)示例

    Opencv 圖片的OCR識別的實戰(zhàn)示例

    這篇文章主要介紹了Opencv 圖片的OCR識別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python基于unittest實現(xiàn)測試用例執(zhí)行

    Python基于unittest實現(xiàn)測試用例執(zhí)行

    這篇文章主要介紹了Python基于unittest實現(xiàn)測試用例執(zhí)行,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python集合union()函數(shù)使用實例詳解

    Python集合union()函數(shù)使用實例詳解

    union()方法的工作原理是:返回多個集合(集合的數(shù)量大于等于2)的并集,即結(jié)果集合包含了所有被合并集合中的所有元素,因為集合中的元素不可重復(fù),所以各個集合中重復(fù)的元素在結(jié)果集合中只會出現(xiàn)一次,本文將簡單介紹一下Python union()函數(shù)使用方法
    2023-07-07

最新評論

离岛区| 中牟县| 大埔县| 长宁县| 丰都县| 苍山县| 中阳县| 九龙城区| 海盐县| 平安县| 吉安县| 千阳县| 长汀县| 永胜县| 政和县| 海晏县| 仁化县| 买车| 察哈| 萝北县| 鹤峰县| 龙州县| 屏山县| 瓮安县| 乡宁县| 浦江县| 利津县| 靖西县| 长葛市| 剑阁县| 威信县| 台北市| 宝丰县| 台州市| 石家庄市| 宿迁市| 舒兰市| 福建省| 江源县| 甘肃省| 玛多县|