pyhton之占位符

在 Python 中,省略号 (...) 和 pass 语句都可以用作占位符,表示该部分代码尚未实现或不需要实现具体逻辑。虽然它们在功能上非常相似,但在某些情况下,它们的使用习惯和语义可能略有不同。

pass 语句

pass 是一个语句,表示什么都不做。它通常用于需要一个语句但不需要执行任何操作的地方。

示例

class MyClass:def my_method(self):pass

省略号 (...)

省略号 (...) 是一个表达式,表示什么都不做。它在语法上是合法的,可以用在需要一个表达式的地方。它通常用于表示代码尚未实现,特别是在类型注解 typing和多维数组切片中。

示例

class MyClass:def my_method(self):...
1. 任意长度的元组

使用 Tuple 和省略号可以表示一个任意长度的元组,其中所有元素的类型相同。

示例

from typing import Tuple, Anydef process_items(items: Tuple[Any, ...]) -> None:for item in items:print(item)# 调用示例
process_items((1, 'a', 3.14))

在这个示例中,Tuple[Any, ...] 表示一个任意长度的元组,其中每个元素的类型可以是 Any

2. 可变参数

使用 Callable 和省略号可以表示一个接受任意数量和类型参数的可调用对象。

示例

from typing import Callabledef execute_function(func: Callable[..., None]) -> None:func()# 调用示例
execute_function(lambda: print("Hello, World!"))

在这个示例中,Callable[..., None] 表示一个接受任意数量和类型参数但返回 None 的可调用对象。

3.多维数组切片中的省略号

在多维数组(如 NumPy 数组)中,省略号 (...) 用于表示任意数量的维度。这在处理高维数组时非常有用。

import numpy as np# 创建一个 3x3 的二维数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用省略号表示所有行的第二列
print(array[..., 1])  # 输出: [2 5 8]

在这个示例中,array[..., 1] 表示选择所有行的第二列。省略号 ... 表示任意数量的维度。

区别和使用场景

  1. 语法类型

    • pass 是一个语句。
    • ... 是一个表达式。
  2. 使用场景

    • pass 更常用于控制流语句中,如循环、条件语句和函数体中。
    • ... 更常用于表示未实现的代码块,特别是在类型注解和多维数组切片中。
  3. 可读性

    • pass 更加明确地表示“什么都不做”。
    • ... 更加明确地表示“尚未实现”。

示例对比

使用 pass

class MyClass:def my_method(self):pass

使用 ...

class MyClass:def my_method(self):...

在这两个示例中,my_method 方法目前都没有任何实现,pass... 的效果是一样的。

具体示例

假设你在编写一个抽象基类,表示某种接口或协议,可以使用 ... 来表示方法尚未实现:

from abc import ABC, abstractmethodclass MyAbstractClass(ABC):@abstractmethoddef my_method(self):...

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

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

相关文章

uni-app-通过vue-cli命令行快速上手

环境安装 全局安装 vue-cli npm install -g vue/cli创建uni-app 使用正式版(对应HBuilderX最新正式版) vue create -p dcloudio/uni-preset-vue my-project使用alpha版(对应HBuilderX最新alpha版) vue create -p dcloudio/uni-p…

Linux常用命令;Linux常用软件;Linux权限

一,常用命令 是人向计算机发送指令的语言。 命令的格式: 命令 [选项] [参数] 1、ls 展示当前目录下文件的命令 1、-l 展示详细信息。还有另外一种写法:ll(字母 LL 小写) 2、-S 按照文件大小倒序展示 3、-t…

1952. 三除数

目录 一:题目: 二:代码: 三:结果: 一:题目: 给你一个整数 n 。如果 n 恰好有三个正除数 ,返回 true ;否则,返回 false 。 如果存在整数 k &a…

【软件测试】性能测试-概念篇

目录 🌴什么是性能测试 🌳常见性能测试指标 🚩并发数 🚩吞吐量 🚩吞吐量分类 🏀按照请求分类:TPS和QTS 🏀按照网络数据包划分:KB 🚩响应时间 🚩资源利用率 &am…

SpringBoot启动流程之运行时监听器

SpringBoot启动过程: 上一节我们讨论SpringApplication实例化的过程,也就是上图1-5步骤,本节我们讨论6-9的关键步骤,现在主要讲是run方法里面的过程 /*** 启动方法* param args* return*/public ConfigurableApplicationContext …

基于JAVA+SpringBoot+Vue的景区民宿预约系统

基于JAVASpringBootVue的景区民宿预约系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈…

Mamba所需的causal-conv1d 和mamba-ssm库在哪下载?

背景介绍 参照 Mamba [state-spaces/mamba: Mamba SSM architecture (github.com)] github中提到的环境安装[Installation 一栏] [Option] pip install causal-conv1d>1.4.0: an efficient implementation of a simple causal Conv1d layer used inside the Mamba block.…

浙版传媒思迈特软件大数据分析管理平台建设项目正式启动

近日,思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司,正式启动大近日,思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司,正式启动大数据分析管理平台建设项目。浙版传媒相…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 2 开通推送服务与配置Client ID

在开通推送服务前,请先参考“应用开发准备”完成基本准备工作,再继续进行以下开发活动。 说明 从HarmonyOS NEXT Developer Beta2起,开发者无需配置公钥指纹和Client ID。 操作步骤 登录AppGallery Connect网站,选择“我的项目…

UML图中部署图例题

答案:B 知识点: 组件图 一组构件之间的组织和依赖,专注于系统的静态实现视图 部署图 运行处理结点以及构件的配置,给出体系结构的静态视图 类图 一组对象,接口,协作和它们之间的关系 UML图中涉及到…

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点(hot spot)功能

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点(snap to hot spot)功能 在采用ALTIUM DESIGNER 18 进行PCB元器件布局时,我喜欢将元器件放置在栅格(grid)上,这样元器件的位置比较规整。但在设置完栅格后&am…

Java流程控制语句——跳转语句详解:break 与 continue 有什么区别?

🌐在Java编程中,break和continue是两个重要的控制流语句,它们允许开发者根据特定条件改变程序的执行流程。虽然两者都用于中断当前的行为,但它们的作用方式不同。本文将通过生动的例子来详细解释这两个语句,并使用流程…

VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 分析记录

项目场景: VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 问题描述 VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 原因分析: 虚拟机开启后会对部分文件继续加密,关闭时虚拟机会自动对其解密&…

计算机毕业设计之:基于uni-app的校园活动信息共享系统设计与实现(三端开发,安卓前端+网站前端+网站后端)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Transcipher:从对称加密到同态加密

摘要 本文介绍了Transcipher的概念。在Transcipher的框架下,用户使用高效的对称加密,对自己的数据进行加密,然后将密文和私钥的同态加密密文传输给服务器。服务器进行同态解密,得到用户数据同态加密的密文。Transcipher通过将计算…

分布式锁的几种方案对比?你了解多少种呢?

目录标题 1.关于分布式锁2.分布式锁的实现方案2.1 基于数据库实现2.1.1乐观锁的实现方式2.1.2 悲观锁的实现方式2.1.3 数据库锁的优缺点 2.2 基于Redis实现2.2.1 基于缓存实现分布式锁2.2.2缓存实现分布式锁的优缺点 2.3 基于Zookeeper实现2.3.1 如何实现?2.3.2 zk实…

1.量化第一步,搭建属于自己的金融数据库!

数据是一切量化研究的前提。 做量化没有数据,就相当于做饭时没有食材。 很多时候,我们需要从大量的数据中寻找规律,并从中开发出策略。如果我们每次使用的时候,都从网上去找数据,一方面效率低下,另一方面短…

运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。

一、问题描述 运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。 二、问题分析 在idea中,运行一个springboot项目,在使用大量的库和依赖的时候,会出现报错“命令行过长”&…

你了解system V的ipc底层如何设计的吗?消息队列互相通信的原理是什么呢?是否经常将信号量和信号混淆呢?——问题详解

前言:本节主要讲解消息队列, 信号量的相关知识。 ——博主主要是以能够理解为目的进行讲解, 所以对于接口的使用或者底层原理很少涉及。 主要的讲解思路就是先讨论消息队列的原理, 提一下接口。 然后讲解ipc的设计——这个设计一些…

构建未来企业的理论基石:业务能力建模指南的深度解析与战略实施框架

数字化转型已经成为全球企业的战略焦点,在这个过程中,如何有效地将复杂的业务需求、技术架构和市场变化结合,形成具备长期竞争力的企业能力框架,是企业成败的关键。《业务能力指南》提供了一套经过验证的理论体系,帮助…