返回类型:If 在函数中条件调用 sys.exit()

2023-12-11

假设我在控制台脚本 (1) 中有以下函数:

def example(x: int) -> typing.Union[typing.NoReturn, int]:
    if x > 10: # something is wrong, if this condition is true
        # logging
        # cleanup
       sys.exit()
    return x * 10

返回类型是否正确指定?由于 NoReturn 意味着该函数never回报(参见:https://docs.python.org/3/library/typing.html),这似乎是错误的。但 mypy 并不抱怨以下组合Union and NoReturn.

这似乎是错误的(2),因为SystemExit没有返回,而是由sys.exit(并导致 mypy 错误):

def example(x: int) -> Union[SystemExit, int]:
    ...

那么(3)呢:

def example(x: int) -> Union[SystemExit, int]:
    if x > 10: # something is wrong, if this condition is true
        # logging
        # cleanup
       return sys.exit()
    return x * 10

这似乎也有道理(4)。然而,签名隐藏了特殊行为:

def example(x: int) -> int:
    if x > 10: # something is wrong, if this condition is true
        # logging
        # cleanup
       sys.exit()
    return x * 10

NoReturn用于声明该函数never返回。

如果我们注释为NoReturn所有可能不返回控制的函数,这将适用于所有可能引发异常的函数。

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

返回类型:If 在函数中条件调用 sys.exit() 的相关文章

  • Python Tweepy:Twitter Api 说 /users/lookup 不存在

    我正在制作一个研究应用程序 研究具有高权威的 Twitter 用户之间的交互 其中一部分是提取有关用户的信息 我使用 Tweepy for Python 构建了一个应用程序 过去 2 天我一直在提取用户信息 没有出现任何问题 突然提出这样的
  • 使用 Pandas 数据框中的字数统计来删除仅包含一个单词的行

    我有一个包含 2 条记录的数据框 数据 id text 0001 The farmer plants grain 0002 tuna 我想统计一下里面的单词数text该数据框的列并删除只有一个单词的行 我知道如何计算单词数 count da
  • OutOfRangeError(请参阅上面的回溯):FIFOQueue '_1_batch/fifo_queue' 已关闭并且元素不足(请求 32,当前大小 0)

    我在使用队列中张量流读取图像时遇到问题 请让我知道我犯了什么错误 下面是代码 import tensorflow as tf slim tf contrib slim from tensorflow python framework imp
  • 按 A 列删除重复项,保留 B 列中具有最高值的行

    我有一个数据框 A 列中有重复值 我想删除重复项 保留 B 列中具有最高值的行 So this A B 1 10 1 20 2 30 2 40 3 10 应该变成这样 A B 1 20 2 40 3 10 我猜想可能有一种简单的方法可以做到
  • 如何创建毫秒粒度的 Python 时间戳?

    我需要一个自纪元以来的毫秒 ms 时间戳 这应该不难 我确信我只是缺少一些方法datetime或类似的东西 实际上微秒 s 粒度也很好 我只需要亚 1 10 秒的计时 例子 我有一个每 750 毫秒发生一次的事件 假设它检查灯是否打开或关闭
  • 使用DockerOperator时如何同时使用xcom_push=True和auto_remove=True?

    Problem 跑步时DockerOperator with xcom push True xcom all True and auto remove True 任务会引发错误 就好像容器在读取其内容之前被删除一样STDOUT Exampl
  • 在 python 中查找价格动量的有效方法:对列的最后 n 个条目求平均值

    我正在定义价格动量是给定股票过去动量的平均值n days 反过来 动量是一种分类 如果当天的收盘价高于前一天 则每天标记为 1 如果当天的收盘价低于前一天 则标记为 1 我的库存变化百分比如下 df close in percent np
  • 从内存中发送图像

    我正在尝试为 Discord 机器人实现一个系统 该系统可以动态修改图像并将其发送给机器人用户 为此 我决定使用 Pillow PIL 库 因为它对于我的目的来说似乎简单明了 这是我的工作代码的示例 它加载一个示例图像 作为测试修改 在其上
  • 参数太少错误,同时未使用参数占位符

    我尝试使用 PYODBC 在 Access 数据库中执行 SQL 查询 但出现以下错误 pyodbc Error 07002 07002 Microsoft ODBC Microsoft Access 驱动程序 参数太少 预期为 1 301
  • Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序

    用 Python 编写我的第一个 Android 应用程序并使用 Buildozer 对其进行打包 因为稍后在项目中需要使用numpy 所以我尝试打包以下测试代码 import numpy import kivy kivy require
  • 更新或插入 MySQL Python

    如果记录已存在 我需要更新一行 如果不存在 我需要创建一个新记录 我理解 ON DUPLICATE KEY 将使用 MYSQLdb 完成此操作 但是我无法使其正常工作 我的代码如下 cursor database cursor cursor
  • 创建 df 以生成给定格式的 json

    我正在尝试生成一个 df 来生成下面的 json Json数据 name flare children name K1 children name Exact size 4 name synonyms size 14 name K2 chi
  • 将 Selenium 与 PyCharm CE 结合使用

    我正在尝试将 Selenium 与 PyCharm CE 一起使用 我已经使用 pip install Selenium 安装了 Selenium 并且可以通过终端使用它 但是当我尝试将它与 PyCharm 一起使用时 出现导入错误 Imp
  • 我无法设置顶级标题

    我想为 TopLevel 设置标题 但 TopLevel 显示 Root 的标题 我认为我的下一个脚本与 TkInter 文档中的示例相对应 但给了我不好的结果 你能解释一下 为什么我的设置master title 顶部 in 应用程序顶部
  • Python 用静态图像将 mp3 转换为 mp4

    我有x文件包含一个列表mp3我想转换的文件mp3文件至mp4文件带有static png photo 似乎这里唯一的方法是使用ffmpeg但我不知道如何实现它 我编写了脚本来接受输入mp3文件夹和一个 png photo 然后它将创建新文件
  • django 南迁移,不设置默认值

    我使用 South 来迁移我的 Django 模型 然而 南方有一个令人讨厌的错误 它不会在 Postgres 数据库中设置默认值 例子 created at models DateTimeField default datetime no
  • 了解字典的深度

    假设我们有这个字典 d a 1 b c 了解嵌套的最直接方法是什么depth of it 您需要创建一个递归函数 gt gt gt def depth d if isinstance d dict return 1 max map dept
  • 访问 Scrapy 内的 django 模型

    是否可以在 Scrapy 管道内访问我的 django 模型 以便我可以将抓取的数据直接保存到我的模型中 我见过this https scrapy readthedocs org en latest topics djangoitem ht
  • 在 python 中使用 re.sub 将字母变成大写?

    在许多编程语言中 以下内容 find foo a z bar并替换为GOO U 1GAR 将导致整个匹配项变为大写 我似乎无法在 python 中找到等效项 它存在吗 您可以将函数传递给re sub http docs python org
  • 捕获 SQLAlchemy 异常

    我可以使用什么捕获 SQLAlechmy 异常的上层异常 gt gt gt from sqlalchemy import exc gt gt gt dir exc ArgumentError CircularDependencyError

随机推荐

  • 如何使用 JavaScript 和 FastAPI 上传多个文件?

    我遵循 FastAPI 文档 我试图将用 js 编写的客户端文件发送到用 FastAPI 编写的服务器 My HTML
  • 使用 Spring LDAP Repository 的多个 LDAP 存储库

    我想使用 Spring LDAP 设置多个 LDAP 存储库 我的目标是同时创建或更新所有存储库中的对象 我使用 LdapRepository Spring 接口 我认为目前这是不可能的 我想知道我是否可以创建自己的 LdapReposit
  • 你在 Java 中推荐哪些 HTML 解析库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想解析一些 HTML 以
  • 本地主机、Php artisan 服务和 homestead 的优点/缺点

    我是 Laravel 的新手 我很困惑将使用哪个环境来创建带有数据库集成 MYSQL 的应用程序 Wamp 本地主机 PHP工匠 家园 每种环境的优点 缺点是什么 谢谢 虽然这个问题是基于意见的 但我的回答将基于我的经验 WAMP 本地主机
  • ZooKeeper 快照文件足以恢复状态吗?

    我正在了解 ZooKeeper 并查看备份 ZooKeeper 中存储的数据的选项 ZooKeeper写入两个数据文件 快照和事务日志 人们经常提到快照是 模糊的 需要在它们上重放事务日志以获得最新状态 对于观察者来说 没有事务日志被保存到
  • 如何从 Python 函数外部停止执行该函数?

    所以我有一个我使用的库 在我的一个函数中 我调用该库中的一个函数 这恰好需要很长时间 现在 同时我有另一个线程在运行 我在其中检查不同的条件 我想要的是 如果满足条件 我想取消库函数的执行 现在我正在检查函数开始时的条件 但是如果在库函数运
  • C# 中用于基于平台导入的预处理器指令

    在 C 中查找预处理器指令 用于根据可执行文件是 64 位还是 32 位导入 dll if WIN64 DllImport ZLIB64 dll CallingConvention CallingConvention Cdecl else
  • 如何设置 ASP.NET Core Identity cookie 的路径

    我有一个 ASP NET Core MVC 应用程序 它还托管一个 API 该站点使用身份默认值 因此当您登录时会设置 cookie API 已配置为使用 JWT Bearer 身份验证 我还有一个单独的 ASP Net Core MVC
  • 当服务器和客户端在同一台机器上时监听广播

    花了大半夜的时间后 我还没能成功 这是我正在做的事情 这是一种由一个参与者主持并由其他玩家加入的网络游戏 主持人本人也充当玩家 用户点击 Host 按钮开始在UDP上做广告 其他用户可以查看所有可用主机的列表并选择其中一台加入 作为初学者
  • HTTPERR 日志:Request_Cancelled(对 WCF 服务进行故障排除时)

    我正在尝试解决访问 WCF 自托管服务的 WCF 客户端上的 连接被远程主机强制关闭 错误 我正在查看服务端计算机上 System32 LogFiles HTTPERR 中的 httperr 日志 每次在客户端上看到该错误时 我都会在日志中
  • 图形中的凸包 - Mathematica

    尝试使用计算几何包中的平面图绘制凸包 但在图形中使用时不起作用 关于如何使用 Graphics 绘制 ConvexHull 有什么想法吗 Needs ComputationalGeometry pts RandomReal 0 10 60
  • 如何在xtable的align参数中设置列宽和文本对齐方式?

    我想保留我设置的列的宽度align的论证xtable我想将所有数字列向右对齐 其他数字列向左对齐 标题向中间对齐 我找到了一些使用直接写入表格的解决方案rnw文件 但我想从文件加载数据 因为我的表很大 并且可以在创建knitr文档期间发生变
  • 按日期排序的两侧条形图

    我正在尝试创建一个双面条形图 如下所示这个答案 但我想按日期对条形进行排序 并将 x 轴标签更改为其他值 不是日期 我的数据集如下所示 date rival goals misses 1 2015 07 19 2 1 2 2015 07 2
  • grunt-express-server 与 contrib-watch

    我正在尝试同时使用两者grunt express server and grunt contrib watch然而 一旦我的快递服务器启动 它似乎就不再进行任何观看或重新加载 我有服务器设置在后台生成 我的项目在这里 https githu
  • Lua elseif 无法正常工作

    当我尝试使用elseif 它不起作用 在下面的代码中 无论用户输入哪个数字 唯一运行的代码是 if 语句下的代码 io write do you want to convert from celsius to farenheit 1 or
  • 绑定到列表框,但只显示选定的元素?

    我有一个绑定到 ListBox 的对象集合 但实际上我只想显示所选元素 而不是整个集合 解决这个问题的最佳方法是什么 使用不同的控件 我想我可以做一个 Visibility ValueConverter 来检查 IsSelected 属性
  • 获取php中的referrer URL(包括参数)

    是否有任何 HTTP 标头可供我使用网络服务器 服务器端脚本来获取整个引荐来源网址 包括查询字符串等 您应该能够从 SERVER HTTP REFERER 变量中获取它
  • 使用 Flutter API 加密读取 PEM 文件

    import package encrypt encrypt dart import package encrypt encrypt io dart import dart io import package pointycastle as
  • ZedGraph 用图表线平滑移动 Y2Axis

    在回答我的问题时 ZedGraph 自定义图表 我有每秒插入数据的图表 现在我有其他问题 如何用图表线平滑地向下移动Y2轴 DateTime类型 并在图表中始终只显示最后30分钟 如何格式化 Y2Axis 标签 HH mm 以获得 10 0
  • 返回类型:If 在函数中条件调用 sys.exit()

    假设我在控制台脚本 1 中有以下函数 def example x int gt typing Union typing NoReturn int if x gt 10 something is wrong if this condition