Python From Beginner to Advanced

0% completed

Previous
Next
Python - Function Arguments

Python functions are highly flexible in terms of how arguments can be passed to them. This flexibility allows developers to define functions that can handle a wide range of input scenarios, making code more reusable and maintainable. There are several types of arguments that can be used when defining and calling functions:

Positional or Required Arguments

Positional arguments are the most common type of argument in Python functions. These arguments need to be passed to the function in the correct order, which means the order in which the parameters are defined at function creation must be matched by the order of the arguments at function call.

Key Points

  • Order Matters: The first argument in the function call fills the first parameter, the second fills the second, and so on.
  • Mandatory: Each positional argument must be provided during the function call, or an error will occur.

Example

In this example, we will demonstrate using positional arguments.

Python3
Python3

. . . .

Explanation:

  • def print_names(first_name, last_name): defines a function with two positional parameters: first_name and last_name.
  • The function is called with the values 'John' for first_name and 'Doe' for last_name. The order is crucial here as switching them would result in incorrect assignment.

Keyword Arguments

Keyword arguments allow you to pass arguments by explicitly associating each argument with a parameter name. This can make it clearer what each argument represents when calling the function and does not require the arguments to be in the same order as the parameters.

Key Points

  • Flexibility in Order: The order of arguments can be different from the order of parameters in the function definition.
  • Clarity: Provides clarity in function calls with many parameters or optional parameters.

Example

In this example, we will demonstrate using keyword arguments.

Python3
Python3

. . . .

Explanation:

  • display_info(name, age) defines a function expecting two inputs: name and age.
  • The function call display_info(age=30, name='Alice') uses keyword arguments, which allow specifying each argument by name, making the order interchangeable.

Default Arguments

Default arguments are parameters that assume a default value if a value is not provided in the function call. They are useful for creating functions with optional parameters.

Key Points

  • Flexibility: Allows functions to be called with fewer arguments than defined.
  • Default Values: Provides default values for parameters that might not require a change every time the function is called.

Example

In this example, we will demonstrate using default arguments.

Python3
Python3

. . . .

Explanation:

  • describe_pet(pet_name, animal_type='dog') sets a default value of 'dog' for animal_type, making it optional.
  • The first function call describe_pet('Rover') omits the animal_type argument, using the default value.
  • The second call specifies both pet_name and animal_type, demonstrating how default values can be overridden.

Positional-only Arguments

Positional-only arguments are specified such that the arguments must be supplied positionally and cannot be named when the function is called.

This is specified in Python by placing a / in the function definition after the positional-only parameters.

Key Points

  • Privacy: Helps in hiding the parameter names from external users, especially when the names do not need to be known.
  • Clarity and Simplicity: Simplifies the API, especially when the names of parameters do not add meaningful information for the user.

Example

In this example, we will demonstrate using positional-only arguments.

Python3
Python3

. . . .

Explanation:

  • def mix_colors(red, blue, /): defines red and blue as positional-only arguments. The / indicates that parameters preceding it must be supplied without naming.
  • The function call mix_colors('red intensity', 'blue intensity') must supply values for red and blue in order, without using keyword syntax.

Keyword-only Arguments

Keyword-only arguments require that arguments are supplied with their names explicitly at the time of function call. They are defined after a * in the function parameters.

Key Points

  • Explicitness: Forces the use of keyword arguments, making it clear what the value being passed represents.
  • Flexibility: Allows for more readable code and avoids errors with incorrect positional arguments.

Example

In this example, we will demonstrate using keyword-only arguments.

Python3
Python3

. . . .

Explanation:

  • def create_profile(*, name, age): sets name and age as keyword-only arguments. The * enforces that any parameters following it must be explicitly named when called.
  • The function call create_profile(name='John', age=25) uses keywords to specify each argument, which is mandatory for this function definition.

Arbitrary or Variable-length Arguments

Functions might need to accept an arbitrary number of arguments, either as positional arguments or keyword arguments. This is handled using *args for non-keyword variable-length argument lists and **kwargs for keyword variable-length arguments.

Key Points

  • Flexibility: Allows functions to handle a variable number of arguments gracefully.
  • Convenience: Useful for wrapping, delegating, or combining data dynamically.

Example

In this example, we will demonstrate using arbitrary arguments.

Python3
Python3

. . . .

Explanation:

  • def configure_settings(**settings): accepts any number of keyword arguments, which are collected into a dictionary called settings.
  • The function iterates over the settings dictionary, printing out each configuration setting and its value.
  • configure_settings(database='MySQL', port=3306, timeout='30s') shows how to pass multiple settings as keyword arguments to the function.

This comprehensive overview of different types of function arguments in Python underscores their flexibility and power in function definition and invocation. Understanding and applying these techniques can significantly improve the functionality and readability of Python code.

.....

.....

.....

Like the course? Get enrolled and start learning!
Previous
Next