DEV Community

Julien AWON'GA
Julien AWON'GA

Posted on

Ellipsis in Python

As a Python developer, you may have come across the ellipsis (...) symbol and wondered what it means. In Python, an ellipsis is a built-in constant that represents a placeholder for code that you will add later. This constant is used in a variety of ways in Python, and in this article, we'll explore some of the common use cases of ellipsis.

Using Ellipsis as a Placeholder

In Python, you can use the ellipsis constant as a placeholder for code that you haven't written yet. This is useful when you are working on a complex program and need to come back to a particular section later. You can use the ellipsis to mark the section that you need to revisit, like this:

def complex_function():
    # TODO: implement this function
    ...
Enter fullscreen mode Exit fullscreen mode

Using Ellipsis in Slicing

In Python, you can use ellipsis in slicing to represent an unspecified number of dimensions. When used in a slice, the ellipsis symbol means "all remaining dimensions." This is particularly useful when working with multidimensional arrays.

For example, consider a 3D numpy array arr with shape (3, 4, 5). To select all elements in the first dimension, you can use the : symbol:

arr[:, :, :]
Enter fullscreen mode Exit fullscreen mode

To select all elements in the second dimension, you can use the following:

arr[:, :, :]
Enter fullscreen mode Exit fullscreen mode

But what if you want to select all elements in the third dimension? Here's where ellipsis comes in:

arr[..., :]
Enter fullscreen mode Exit fullscreen mode

Here, the ellipsis symbol represents the unspecified dimensions. The resulting slice will select all elements in the third dimension.

Using Ellipsis in Function Arguments
In Python, you can use the ellipsis symbol in function arguments to indicate that the argument is optional. This is often used in function definitions where the function can accept an arbitrary number of arguments.

For example, consider the following function:

def my_function(arg1, arg2, *args, **kwargs):
    ...
Enter fullscreen mode Exit fullscreen mode

Here, the *args and **kwargs arguments indicate that the function can accept an arbitrary number of positional and keyword arguments. If you want to indicate that a particular argument is optional, you can use the ellipsis symbol as its default value, like this:

def my_function(arg1, arg2, arg3=...):
    ...
Enter fullscreen mode Exit fullscreen mode

Here, the arg3 argument is optional, and its default value is ....

Using Ellipsis in Type Annotations

In Python, you can also use ellipsis in type annotations to represent a type that you haven't defined yet. This is useful when you're working on a large codebase and need to define types incrementally.

For example, consider the following type annotation:

def my_function(arg1: int, arg2: str, arg3: ...) -> float:
    ...
Enter fullscreen mode Exit fullscreen mode

Here, the arg3 parameter has an ellipsis type annotation, indicating that its type is unspecified. When you come back to this function later, you can fill in the type annotation for arg3.

While the ellipsis constant may seem like a small and obscure feature in Python, it can actually be quite useful in certain situations. By using ellipsis as a placeholder for code that you haven't written yet, you can write more flexible and efficient Python code that is easier to maintain over time.

I hope this article has helped you understand what ellipsis is and how it can be used in Python. If you have any questions or comments, feel free to leave them below!

Top comments (0)