gpt4 book ai didi

python - 没有括号的 "raise exception()"和 "raise exception"有区别吗?

转载 作者:IT老高 更新时间:2023-10-28 21:11:54 31 4
gpt4 key购买 nike

定义无参数异常:

class MyException(Exception):
pass

当提出时,有什么区别:

raise MyException

raise MyException()

我找不到;它只是一个重载的语法吗?

最佳答案

简短的回答是 raise MyExceptionraise MyException() 都做同样的事情。第一种形式自动实例化您的异常。

relevant section from the docs说:

raise evaluates the first expression as the exception object. It must be either a subclass or an instance of BaseException. If it is a class, the exception instance will be obtained when needed by instantiating the class with no arguments.

也就是说,尽管语义相同,但第一种形式在微观上更快,而第二种形式更灵活(因为您可以根据需要传递参数)。

大多数人在 Python 中(即在标准库、流行应用程序和许多书籍中)使用的通常样式是在没有参数时使用 raise MyException。人们只有在需要传递一些参数时才直接实例化异常。例如:raise KeyError(badkey).

关于python - 没有括号的 "raise exception()"和 "raise exception"有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16706956/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com