Python – Keyword-Only Arguments

Introduction to Keyword-Only Arguments in Python

In Python, keyword-only arguments are a powerful feature that allows developers to define functions with arguments that can only be passed by using their corresponding keyword. Unlike positional arguments, which are passed based on their position in the function call, keyword-only arguments provide more flexibility and control over how arguments are passed to a function.

Keyword-only arguments are defined using the asterisk (*) syntax in the function signature, followed by the argument names. This syntax indicates that the arguments after the asterisk can only be passed by using their corresponding keyword.

Example: Defining a Function with Keyword-Only Arguments

Let’s take a look at an example to understand how keyword-only arguments work:


def greet(name, *, age):
    print(f"Hello {name}!")
    print(f"You are {age} years old.")

In this example, the function greet has two parameters: name and age. The asterisk (*) before the age parameter indicates that it is a keyword-only argument. This means that it can only be passed by using the keyword age in the function call.

Using Keyword-Only Arguments in Function Calls

When calling a function with keyword-only arguments, you must specify the argument name followed by the value. Let’s see how we can call the greet function:


greet("John", age=25)

In this example, we are calling the greet function with the positional argument "John" and the keyword argument age=25. Since age is a keyword-only argument, it cannot be passed as a positional argument. By using the keyword argument syntax, we can specify the value of age without relying on its position.

Benefits of Keyword-Only Arguments

Keyword-only arguments offer several advantages:

  1. Improved Readability: By using keyword arguments, function calls become more self-explanatory. The argument names make it clear what each value represents, enhancing code readability.
  2. Flexibility: Keyword-only arguments provide flexibility in function calls. They allow you to specify only the arguments that are relevant to your use case, without having to pass all the arguments in a specific order.
  3. Future-Proofing: Keyword-only arguments also make it easier to add new arguments to a function without breaking existing code. Since the new arguments are keyword-only, they can be added without affecting the existing positional arguments.

Using Default Values with Keyword-Only Arguments

You can also assign default values to keyword-only arguments, making them optional in function calls. Let’s update our previous example:


def greet(name, *, age=18):
    print(f"Hello {name}!")
    print(f"You are {age} years old.")

In this updated version, the age argument has a default value of 18. This means that if we don’t provide a value for age in the function call, it will default to 18.

Conclusion

Keyword-only arguments in Python provide a flexible and readable way to define functions. By using keyword arguments, you can enhance the clarity and usability of your code. They also offer the advantage of future-proofing your functions by allowing the addition of new arguments without affecting existing code.

Understanding and utilizing keyword-only arguments can greatly improve the quality and maintainability of your Python code.

Scroll to Top