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
The ...
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: a[..., 0]