当前位置: 首页 > 面试题库 >

带有异常的Python类型提示

谢锦程
2023-03-14
问题内容

我有一个看起来像这样的函数:

def check_for_errors(result):
    if 'success' in result:
        return True

    if 'error' in result:
        raise TypeError

    return False

在成功运行此函数时,我应该得到一个bool,但是如果出现错误,我应该得到一个TypeError-可以,因为我在另一个函数中处理了它。

我的函数第一行看起来像这样:

def check_for_errors(result: str) -> bool:

我的问题是:我应该在类型提示中提及错误吗?


问题答案:

类型提示不能说任何有关异常的信息。它们完全超出了该功能的范围。但是,您仍然可以在文档字符串中记录异常

PEP 484-类型提示

例外情况

没有提出用于列出显式引发的异常的语法。当前,此功能的唯一已知用例是文档说明,在这种情况下,建议将此信息放入文档字符串中。

Guido van
Rossum强烈反对在类型提示规范中添加异常,因为他不想最终陷入需要在每个级别
检查 (在调用代码中处理)或显式声明异常的情况。



 类似资料:
  • 我实现了一个这样的树 但是在 PyCharm 中,我得到有解决方法吗?

  • 问题内容: 我正试图将我的大班分成两部分;好吧,基本上是进入“主”类和具有其他功能的mixin的,就像这样: 文件: 文件: 现在,尽管这很好,但类型提示当然不起作用。我无法导入,因为会进行周期性导入,并且没有提示,我的编辑器(PyCharm)无法分辨出什么。 我正在使用Python 3.4,如果那里有解决方案,我愿意移至3.5。 有什么办法可以将我的班级分成两个文件并保留所有“连接”,以便我的I

  • 我试图把我庞大的班级一分为二;好的,基本上分为“main”类和带有附加函数的mixin,如下所示: 文件: 文件: 现在,虽然这很好,但是

  • 问题内容: 在PEP 484中 ,包含模块的类型提示已添加到Python 3中。在Python 2中有什么方法可以做到这一点?我能想到的就是有一个装饰器来添加到检查类型的方法中,但这将在运行时失败,并且不会像提示所允许的那样被较早地捕获。 问题答案: 根据 Python 2.7的建议语法和 定义类型提示的PEP 484中的 跨代码 ,存在与Python 2.7兼容的另一种语法。但是,它不是强制性的

  • 考虑一个结构 ,其中删除了复制构造函数,而是从非 const 引用中改为使用构造函数。是否可以抛出 的对象,然后按值捕获它,如示例程序中所示: GCC和Clang都允许这样的使用。尽管MSVC打印了一个错误: 演示:https://gcc.godbolt.org/z/P4c6Ea9fz 确实

  • 我有这个目标: 还有这个: