Difference between pass statement and 3 dots(...) in python
pass has been in the language for a very long time and is just a no-op. It is designed to explicitly do nothing.
... is a token having the singleton value
Ellipsis, similar to how
None is a singleton value. Putting
... as your method body has the same effect as for example:
def foo(): 1
... can be interpreted as a sentinel value where it makes sense from an API-design standpoint, e.g. if you overwrite
__getitem__ to do something special if
Ellipsis are passed, and then giving
foo[...] special meaning. It is not specifically meant as a replacement for no-op stubs, though I have seen it being used that way and it doesn't hurt either
Not exactly an answer to your question, but perhaps a useful clarification. The
pass statement should be use to indicate a block is doing nothing (a no-op). The
... (ellipsis) operator is actually a literal that can be used in different contexts.
An example of ellipsis usage would be with NumPy array indexing: