Understanding Python TypeError: sort() Takes No Positional Arguments


Python TypeError: sort() takes no positional arguments

Python sort() function takes no positional arguments.

For example, consider the following program, where we passed a function as argument to sort() method.

my_list = ['cherry', 'apple', 'mango', 'banana']
my_list.sort(str.lower)
print(my_list)

When you run this program, we get the following error in output.

Traceback (most recent call last):
  File "/Users/pythonexamplesorg/main.py", line 2, in <module>
    my_list.sort(str.lower)
TypeError: sort() takes no positional arguments

Please observe the definition of Python List sort() method, which is given below.

def sort(
    *,
    key: None = None,
    reverse: bool = False
) -> None: ...

It takes only two named arguments. One is key, and the other is reverse.

So, if you like to specify a key function to the List sort() method, you do that as shown in the following.

my_list = ['cherry', 'apple', 'mango', 'banana']
my_list.sort(key=str.lower)
print(my_list)

Or, if you would like to sort the list in descending order, you specify the reverse parameter using reverse named argument, as shown in the following.

my_list = ['cherry', 'apple', 'mango', 'banana']
my_list.sort(reverse=True)
print(my_list)

You can specify both the named arguments as shown, if required.

my_list = ['cherry', 'apple', 'mango', 'banana']
my_list.sort(key=str.lower, reverse=True)
print(my_list)

Summary

In this tutorial, we learned how to solve the exception: "TypeError: sort() takes no positional arguments" in Python.