gpt4 book ai didi

python - 什么时候使用 Python Ellipsis 优于 'pass' ?

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:17 27 4
gpt4 key购买 nike

当我找到 abc 模块 ( https://docs.python.org/3/library/abc.html ) 时,我正在寻找在 Python 中定义抽象基类的方法。

经过一些阅读,我看到了以下类:

class C(ABC):
@abstractmethod
def my_abstract_method(self, ...):
...
@classmethod
@abstractmethod
def my_abstract_classmethod(cls, ...):
...

想知道三重点,我发现它叫做 Ellipsis ( https://docs.python.org/3/library/constants.html#Ellipsis )。到目前为止,我只看到并使用过它与类型提示结合使用,在这种情况下它非常有意义。

但是为什么要在抽象方法的定义中使用省略号呢?就个人而言,我要么做

def my_abstract_method(self):
raise RuntimeError("NotImplemented")

def my_abstract_method(self):
pass

那么为什么在官方文档中省略号优先于 pass 呢?只是自以为是吗?

最佳答案

使用Ellipsis 文字作为函数体没有任何作用。如果您使用它而不是 pass 或其他一些语句,这纯粹是一种风格问题。如果你给你的函数一个文档字符串,你甚至不需要在带有文档字符串的行之后放置任何语句。

如果官方 Python 文档不一致,那可能是因为编写文档的 Python 核心开发人员自己对哪个看起来最好没有一致的看法。 PEP 8 没有就虚拟函数主体使用什么给出任何建议(尽管它确实使用了大量的 ... 来代表其示例中的内容,有时在您实际上无法在实际代码中使用 Ellipsis 的地方)。

因此,对于您自己的代码,请使用您最喜欢的任何内容。如果您想正式一点,请在您的风格指南中写下您的偏好,然后始终按照指南所说的去做。您不需要遵循与其他任何人相同的风格(除非那个人是您的老板)。

最后一点:您不能将 ... 用作函数定义中的参数名称 (def my_abstract_method(self, ...): 引发一个SyntaxError,不管下一行是什么)。

关于python - 什么时候使用 Python Ellipsis 优于 'pass' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55274977/

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