Skip to content

Python kwargs best practices

  • by

Python kwargs (keyword arguments) best practices refer to guidelines and recommendations for effectively using and handling keyword arguments in Python functions. Here are some commonly followed best practices:

Best PracticeDescription
Document the kwargsProvide clear and concise documentation for the keyword arguments, including their purpose, expected types, and default values.
Use explicit parameter namesGive meaningful names to keyword arguments instead of generic ones like **kwargs.
Validate and handle unexpected kwargsValidate the keyword arguments received and handle unexpected ones, either by checking specific keys or using **kwargs.
Avoid excessive use of kwargsUse kwargs judiciously and consider explicitly defining and documenting parameters instead.
Use type hintsUtilize type hints to specify the expected types of kwargs and improve code clarity.
Consider default values for kwargsSet commonly used default values for kwargs to simplify function calls.
Keep kwargs near the end of parametersFollow the convention of placing keyword arguments near the end of the parameter list for cleaner function calls.
Be consistent with naming conventionsFollow consistent naming conventions for kwargs, using lowercase with underscores.

These best practices will help you write clean, readable, and maintainable code when working with kwargs in Python.

The syntax for working with kwargs in Python is as follows:

Function Definition:

def my_function(**kwargs):
    # Function body

Function Call:

my_function(arg1=value1, arg2=value2, ...)
  • In the function definition, the parameter is prefixed with two asterisks (**). This indicates that the function can accept an arbitrary number of keyword arguments.
  • Inside the function, the keyword arguments are treated as a dictionary, where the argument names act as keys, and the corresponding values are the argument values.
  • When calling the function, keyword arguments are specified using the arg_name=value syntax.

Here’s an example that demonstrates the usage of kwargs:

def greet(**kwargs):
    if 'name' in kwargs:
        print(f"Hello, {kwargs['name']}!")
    else:
        print("Hello, stranger!")

greet(name="Alice")  # Output: Hello, Alice!
greet()              # Output: Hello, stranger!

In the above example, the greet function accepts kwargs and checks if the 'name' key is present. If it is, it prints a personalized greeting using the corresponding value. Otherwise, it prints a generic greeting.

Python kwargs best practices example

Here’s an example that demonstrates the best practices for working with kwargs in Python:

def calculate_discounted_price(base_price, **kwargs):
    """
    Calculates the discounted price based on the base price and any additional kwargs provided.

    Keyword Arguments:
    - percentage_discount (float): The percentage discount to apply.
    - fixed_discount (float): The fixed discount amount to subtract.

    Returns:
    float: The discounted price.
    """
    discounted_price = base_price

    if 'percentage_discount' in kwargs:
        percentage_discount = kwargs['percentage_discount']
        discounted_price -= base_price * (percentage_discount / 100)

    if 'fixed_discount' in kwargs:
        fixed_discount = kwargs['fixed_discount']
        discounted_price -= fixed_discount

    return discounted_price


base_price = 100.0

dp1 = calculate_discounted_price(base_price, percentage_discount=20.0)
print(f"Discounted Price 1: ${dp1}")

dp2 = calculate_discounted_price(base_price, fixed_discount=10.0)
print(f"Discounted Price 2: ${dp2}")

dp3 = calculate_discounted_price(base_price, percentage_discount=15.0, fixed_discount=5.0)
print(f"Discounted Price 3: ${dp3}")

Output:

Python kwargs best practices

In the example above, the calculate_discounted_price function calculates the discounted price based on a base price and additional keyword arguments. Here are the best practices followed in this example:

  1. The function is well-documented, providing information about the purpose, expected types, and return value.
  2. The kwargs are explicitly named and described in the function signature, including their expected types.
  3. The function validates the presence of specific keyword arguments (percentage_discount and fixed_discount) using the in keyword.
  4. The function handles each keyword argument appropriately, applying the corresponding discount to the base price.
  5. The function returns the final discounted price.

Note: IDE: PyCharm 2021.3.3 (Community Edition)

Windows 10

Python 3.10.1

All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.

Leave a Reply

Your email address will not be published. Required fields are marked *