Python 中 switch 语句的替代品?

2024-02-20

我想用 Python 编写一个函数,根据输入索引的值返回不同的固定值。

在其他语言中我会使用switch or case声明,但Python似乎没有switch陈述。这种场景下推荐的Python解决方案有哪些?


Python 3.10 (2021) 引入了match-case https://www.python.org/dev/peps/pep-0634/语句,它为 Python 提供了“switch”的一流实现。例如:

def f(x):
    match x:
        case 'a':
            return 1
        case 'b':
            return 2
        case _:
            return 0   # 0 is the default case if x is not found

The match-case语句比这个简单的例子强大得多。


如果需要支持 Python ≤ 3.9,请改用字典:

def f(x):
    return {
        'a': 1,
        'b': 2,
    }[x]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中 switch 语句的替代品? 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • javafx 2.1 中警报的替代品是什么?警报在 javafx 1.3 中,但不在 javafx 2.1 中

    Alert 是 javafx 1 3 中的类 但在 javafx 2 1 中不是 那么 javafx 2 1 中警报的替代品是什么 特奥卡利是正确的 警报对话框 http javafx jira kenai com browse RT 12
  • Lambda 错误:未找到模块。 Cryptography.hamtaz.bindings._constant_time

    我创建了一个 lambda 函数 它将数据上传到雪花 我在文件夹中安装了所有要求 并与我的主 python 文件一起压缩 在 AWS 中运行时显示错误 没有找到模块 Cryptography hamtaz bindings constant
  • TArray<字节> VS TBytes VS PByteArray

    这3种类型非常相似 TArray 是 TBytes 的通用版本 两者都可以转换为 PByteArray 并用作调用 Windows API 的缓冲区 具有与字符串到 Pchar 相同的限制 我想知道的是 这种行为是 设计使然 还是 实现使然
  • 反序列化具有可能是字符串或整数字段的 JSON 对象的最佳实践是什么?

    我正在尝试使用 Newton Json Deserializer 来反序列化 json 对象 如下所示 grades 97 Or this grades 我想知道我应该如何正确定义DTO https martinfowler com eaa
  • C# 在添加的线程内触发事件

    考虑两个类 Producer and Consumer 与经典模式相同 每个都有自己的线程 是否有可能Producer拥有一个Event which Consumer可以注册并当生产者触发事件时 消费者的事件处理程序在其自己的线程中运行吗
  • android.app.Application 单例实例被重新创建

    我在用android app Application创建单个实例 出于某种原因 我看到 Android 杀死了我的Instance并重新创建 调用onCreate 我怎样才能阻止这种情况发生 我尝试添加日志onTerminate and o
  • Angular 2自定义表单验证不会阻止调用onSubmit

    也许我很愚蠢 但我一生都无法弄清楚如何获得自定义表单验证以阻止验证失败时调用 onSubmit 在创建新控件时 我尝试使用 HTML 语法 通过将自定义验证关键字直接添加到表单组件的 htmlTemplate 中 以及通过代码 我也没有看到
  • 如何防止在c#中最大化无状态形式

    我创建了一个表单并设置了它FormBorderStyle财产给none 当我按下Windows UP形式将是最大化 如何防止表单最大化 我试过 private void logIn Resize object sender EventArg
  • 如果 pandas 末尾有“-”符号,则将值转换为负浮点数

    在数据框中 我有一个名为 Val 的列 其中有浮点值 但负值由末尾的 号表示 因此它被解释为对象 IE gt gt gt df Val drop duplicates sort values 5 0 00000 1873 0 20000 4
  • Stripe 动态付款

    我正在与 Stripe 作斗争 我正在使用 PHP 并且正在尝试建立一个简单的商店 没有 CMS 想知道如何将金额传递到 charge php 以便我可以对不同的产品收取不同的金额 这里是我的代码 charge Stripe Charge
  • 为什么JDK NIO使用这么多anon_inode文件描述符?

    我正在使用 Sun 的 JDK 1 6 0 26 和 NIO 带有 Netty 在 lsof 中我看到数百个文件描述符anon inode lsof np 11225 fgrep w anon inode java 11225 nobody
  • 等待多部分图像发送完成

    我正在 iOS7 中实现一个应用程序 它是一种社交网络应用程序 其中包含带有图像的帖子和保存从客户端发送的所有数据的后端 iOS客户端通过json发送帖子信息 发送信息后 它开始使用多部分形式发送图像AFNetworking 发送图像时需要
  • Java 中的 Lambda 表达式?

    我需要将部分项目从 C 切换到 Java 但在此之前 我想仔细 全面地比较两种语言 关于lambda表达式 我可以通过C 编写非常优雅的代码 问题是如何在Java中优雅地实现相同的功能 提前致谢 class Program enum Gen
  • Java Swing JFrame 背景未显示

    我不知道为什么我的 Jframe 上没有显示背景颜色 下面是我尝试过的代码 当我打电话时 AnimatedDialogBox animatedDialogBox new AnimatedDialogBox Saving TransSet f
  • 使用 php 和 dompdf 在 pdf 中导出变音符号

    我在导出 PDF 文档中的重音字符 例如 时遇到问题 这些字符通常存储在数据库中 但是当我尝试导出到 PDF 时 字符 变换为 C5 9F等等 我认为问题出在 dompdf 库上 现在我做preg replace但这不是一个好的解决方案 有
  • Spring Data + Redis 带自动递增键

    我正在尝试使用 Redis 进行 Spring 数据 CRUD 操作 但主要需要将自动增量密钥存储在 Redis 中 我尝试过使用Redis对SpringData进行简单的CRUD操作 但没有自动递增键功能 我怎样才能实现这个目标 如果您使
  • 查询中跨越多行的 SQL 字符串值

    UPDATE 简介可能包含撇号 请参阅更新的示例 我有一个 SQL 查询 它的值跨越多行 导致查询失败 UPDATE User SET UserId 12345 Name J Doe Location USA Bio I m a bio t
  • Typescript 对象声明,其中每个 prop 都有自己的泛型

    我正在尝试创建更动态的对象类型 现在我有以下内容 interface MyGeneric
  • ava.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有可用的堆栈

    我在用docx4j从 SD 卡读取 Docx 文件 我有问题org apache log4j Logger图书馆 我什至尝试过从外部添加它 但它仍然给我同样的问题 构建 gradle apply plugin com android app
  • Python 中 switch 语句的替代品?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想用 Python 编写一个函数 根据输入索引的值返回不同的固定值 在其他语言中我会使