【问题标题】:Difference between pass statement and 3 dots(...) in python [duplicate]python中pass语句和3点(...)之间的区别[重复]
【发布时间】:2020-09-13 03:03:24
【问题描述】:

pass语句有什么区别:

def function():
    pass

和 3 个点:

def function():
   ...

哪种方式执行起来更好更快(CPython)?

【问题讨论】:

  • 在半约定中,我经常看到 ... 用于人们想要指出他们打算稍后填写的东西(一个“待办事项”空块)和 pass 表示打算的块没有代码>>>来自stackoverflow.com/a/6189281/11890300的评论
  • 这不是等效的代码。 ... 是一个文字:type(...) <class 'ellipsis'>。这就像在做def f(): 5。所以对于你的问题:pass

标签: python


【解决方案1】:

pass 已经在该语言中使用了很长时间,并且只是一个空操作。它旨在明确地什么都不做。

... 是一个具有单例值Ellipsis 的标记,类似于None 是一个单例值。将... 作为您的方法体具有与例如相同的效果:

def foo():
    1

... 可以解释为从 API 设计的角度来看有意义的标记值,例如如果你覆盖__getitem__ 做一些特别的事情,如果Ellipsis 被传递,然后给foo[...] 特殊含义。它并不是专门用来替代无操作存根的,尽管我已经看到它以这种方式使用并且它也没有伤害

【讨论】:

    【解决方案2】:

    不完全是您问题的答案,但也许是一个有用的澄清。 pass 语句应该用于指示块什么都不做(无操作)。 ...(省略号)运算符实际上是一个可以在不同上下文中使用的文字。

    省略号使用的一个例子是 NumPy 数组索引:a[..., 0]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2013-05-17
      • 2011-06-22
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2020-05-18
      相关资源
      最近更新 更多