探索Python中的Ellipsis:不仅仅是三个点

news2024/9/24 17:18:04

在Python 3.9中,Ellipsis 对象被赋予了一个新名称,即 ...,这使得它更容易输入和使用。这个变化是在Python 3.9版本中引入的,而不是3.1。这个变化的好处包括:

  1. 易用性:使用 ... 比输入 Ellipsis 更快,因为它只需要输入三个点,而不是一个完整的单词。

  2. 一致性:在Python中,NoneTrueFalse 都是特殊的单例值,它们都有简短的别名(NoneTrueFalse)。... 的引入使得 Ellipsis 也拥有了这样的简短别名,从而与其他特殊值保持一致。

  3. 减少错误:在编写代码时,拼写错误是一个常见的问题。由于 Ellipsis 是一个不常用的单词,因此很容易拼写错误。使用 ... 可以减少这种错误。

  4. 代码清晰:在某些情况下,使用 ... 可以使得代码更加清晰和直观。例如,在切片操作中,使用 ... 可以清楚地表示选择整个序列。

  5. 向后兼容性:尽管引入了新的别名 ...,但 Ellipsis 仍然有效,这意味着旧代码仍然可以正常工作,不会因新特性而中断。

  6. 类型提示:在Python 3.9及更高版本中,... 还可以在类型提示中使用,表示“任意类型”。这为类型注解提供了更多的灵活性。

至于 Ellipsis,它确实是Python中的一个特殊值,通常用于切片操作中表示整个序列,或者在NumPy中用于多维数组的切片。在Python 3.9之前,你只能通过 Ellipsis 来引用这个值。从Python 3.9开始,为了方便,引入了 ... 作为 Ellipsis 的别名,使得它更容易输入和使用。

Ellipsis 的一个更易输入的表示方式。这三个值(NoneTrueFalse)和 Ellipsis 在Python中都有其独特的用途和语义。

在Python中,... 是一个特殊的值,通常被称为“Ellipsis”。它是一个单例对象,可以通过三种不同的语法表示:...Ellipsis 或者 None。尽管这三种表示方式在大多数情况下可以互换使用,但它们在技术上并不是完全相同的。

使用场景

  1. 在切片操作中... 用作切片操作中的一个占位符,表示从序列的开始到结束。例如:
   a = [0, 1, 2, 3, 4, 5]
   # 等同于 a[0:6]
   a[...]  # [0, 1, 2, 3, 4, 5]

在这个例子中,... 表示整个序列。

  1. 在NumPy中:在NumPy库中,... 用于多维数组的切片,表示对所有维度进行操作。例如:
   import numpy as np
   a = np.array([[1, 2], [3, 4]])
   # 选取所有元素
   a[...]  # array([[1, 2], [3, 4]])
  1. 在函数调用中:有时在函数调用中使用 ... 可以传递可变数量的参数或关键字参数。

  2. 在类型注解中:在Python 3.10及以上版本中,... 可以用作类型注解,表示“任意类型”。

   def func(x: ...):
       pass

这里,... 表示 x 可以是任何类型。

5.在fastAPI内使用…
main.py在这里插入图片描述

fastapi dev main.py 

运行的结果:
在这里插入图片描述

None 的区别

虽然在大多数情况下 ...None 可以互换使用,但它们在技术上是不同的对象。NoneNoneType 的一个实例,而 ...ellipsis 的一个实例。在Python的内部实现中,它们有不同的用途。

总结

... 是Python中的一个特殊值,它在不同的上下文中有不同的用途。在切片操作中,它代表整个序列;在NumPy中,它用于多维数组的全维度操作;在函数调用中,它可以传递可变数量的参数;在类型注解中,它表示任意类型。尽管它在很多情况下可以和 None 互换使用,但它们在技术上是不同的对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2105148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第11讲 回环检测

1、理解回环检测的必要性 2、掌握基于词袋的外观式回环检测 3、通过DBoW3的实验,学习词袋模型的实际用途 1、概述 1.1 回环检测的意义 回环检测模块能够给出除了相邻帧的一些是个更加久远的约束。相机经过了同一个地方,采集了相似的数据。回环检测的关…

OpenCV 之图像平滑处理

引言 图像平滑处理(也称为“模糊处理”)是计算机视觉中一项非常基础的技术,常用于减少图像噪声或失真,提高图像质量。平滑处理可以通过各种滤波器实现,常见的滤波器包括均值滤波、方框滤波、高斯滤波和中值滤波。本文…

【赵渝强老师】大数据生态圈中的组件

大数据体系架构中的组件非常多,每个组件又属于不同的生态圈系统。从最早的Hadoop生态圈体系开始,逐步有了Spark生态圈体系和Flink生态圈体系。因此在学习大数据之前有必要了解一下每一个生态圈体系中具体包含哪些组件,以及它们的作用又是什么…

在移动应用程序中集成模糊方法的基于物联网的天气监测系统的实现

这篇论文的标题是《IMPLEMENTATION OF WEATHER MONITORING SYSTEM BASED INTERNET OF THINGS USING INTEGRATED FUZZY METHOD IN MOBILE APPLICATIONS》,作者是 Muhammad Malik Amin,来自 Politeknik Negeri Jakarta 的 D-IV INSTRUMENTASI DAN KONTROL …

WebAssembly内存结构学习记录

参考: 大文件上传深入研究:https://juejin.cn/post/6870837414852886542 WorkerWasm切片上传:https://juejin.cn/post/7221003401996091429 Wasm实现MD5文件编码:https://juejin.cn/post/7319541565318398003 SharedArrayBuffer与…

Python | 使用Pygments生成漂亮的代码段截图

在创建技术文档或教程时,包含代码段的图像以说明特定的示例或概念可能会有所帮助。但是,对代码文件进行屏幕截图可能看起来不专业,并且难以阅读。本文将探索如何使用库pygments将编程代码转换为Python中美丽的图像片段。 Pygments库 Pygmen…

基于Java+SpringBoot+Vue+MySQL的失物招领管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的失物招领管理系统【附源码文档】、前后…

Java 入门指南:Java 并发编程 —— 并发容器 LinkedBlockingQueue

BlockingQueue BlockingQueue 是Java并发包(java.util.concurrent)中提供的一个阻塞队列接口,它继承自 Queue 接口。 BlockingQueue 中的元素采用 FIFO 的原则,支持多线程环境并发访问,提供了阻塞读取和写入的操作&a…

JavaEE---Spring MVC(4)

MVC学习小案例1 在这里我们要实现一个计算器的功能 在这之前,先解决一个bug! 写好代码之后开始运行,运行发现不对,sum计算不出来,然后我百思不得其解, 1.对着后端代码一顿输出,还是没觉得有问题. 2.对着前端代码一顿输出,也没看出任何问题 3.是不是我前后端交互出错了呢?查找…

Python案例 | 四阶龙格库塔法简介

1.引言 在数值分析中,龙格-库塔法(Runge-Kutta methods)是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔龙格和马丁威尔海姆库塔于1900年左右发明。 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高…

工厂验收(FAT)和现场验收(SAT)的含义

工厂验收(Factory Acceptance Test,FAT)和现场验收(Site Acceptance Test,SAT)是在工程领域中常见的术语,用于确保设备在制造商及用户之间达成一致的验收标准,保证设备能够正常、安全…

【图灵完备 Turing Complete】游戏经验攻略分享 Part.2 算术运算

算术运算部分算是开始有难度了。 前几关按照自己思路来,二进制速算应该没问题。 画真值表,卡诺图,推表达式。 下面几关,几个输出信号分开来看,有三个输出就画三个卡诺图,有几个画几个,分而治之。…

Shadow Dom 是什么

概念 官方:https://developer.mozilla.org/zh-CN/docs/Web/API/Web_components/Using_shadow_DOM 核心:影子 DOM(Shadow DOM)允许你将一个 DOM 树附加到一个元素上,并且使该树的内部对于在页面中运行的 JavaScript 和…

Java笔试面试题AI答之正则表达式(3)

文章目录 13. 简述Java String支持哪几种使用正则表达式的方法?14. 请列举常见校验数字的表达式 ?15. 请列举常见校验字符的表达式 ?1. 汉字2. 英文和数字3. 特定长度的字符串4. 由26个英文字母组成的字符串5. 由数字和26个英文字母组成的字符…

JVM面试(五)垃圾回收机制和算法

概述 了解Java虚拟机的垃圾回收机制(Garbage Collection,简称GC),我们也要像其作者John McCarthy一样,思考一下三个问题: 哪些内存需要回收?什么时候回收?如何回收? 虽…

pytorch+深度学习实现图像的神经风格迁移

本文的完整代码和部署教程已上传至本人的GitHub仓库,欢迎各位朋友批评指正! 1.各代码文件详解 1.1 train.py train.py 文件负责训练神经风格迁移模型。 加载内容和风格图片:使用 utils.load_image 函数加载并预处理内容和风格图片。初始化…

网络攻击全解析:主动、被动与钓鱼式攻击的深度剖析

在当今这个互联网高度普及与深度融合的时代,网络攻击,这一赛博空间的隐形威胁,正以前所未有的频率和复杂度挑战着网络安全乃至国家安全的底线。为了更好地理解并防范这些威胁,本文将深入剖析网络攻击的主要类型——主动攻击、被动…

程序设计基础

一、程序 1.什么是程序? 程序可以看作是对一系列动作的执行过程的描述。 计算机程序是指为了得到某种结果而由计算机等具有信息处理能力的装置执行的代码化指令序列。 程序的几个性质: ● 目的性 ● 分步性 ● 有限性 ● 可操作性 ● 有序性 2…

Splasthop 安全远程访问帮助企业对抗 Cobalt Strike 载荷网络攻击

一、背景 根据 FreeBuf(标题为:潜藏系统2个月未被发现,新型网络攻击瞄准中国高价值目标)和 The Hacker News(标题为:New Cyberattack Targets Chinese-Speaking Businesses with Cobalt Strike Payloads&a…

农产品自主供销系统小程序的设计

管理员账户功能包括:系统首页,个人中心,农产品管理,资讯信息管理,订单管理,资讯回复管理 微信端账号功能包括:系统首页,农产品,购物车,我的 开发系统&#…