Default Arguments in Python – Syntax, Examples & Usage

Introduction

In Python, Default arguments allow you to assign predefined values to function parameters. If the user does not provide a value while calling the function, Python automatically uses the default value. This makes functions more flexible, easier to use, and less prone to errors.

For example, imagine creating a greeting function. Most users may want a generic greeting such as “Hello Guest,” but sometimes they may provide their name. Instead of creating multiple functions, you can use default arguments to handle both cases.

What are Default Arguments in Python?

Default arguments are function parameters that have predefined values assigned during function definition.

If a value is not provided when the function is called, Python uses the default value automatically.

Example:


def greet(name="Guest"):
    print("Hello", name)
greet()

Output:

Hello Guest

In this example:

  • name is a parameter.
  • “Guest” is the default value.
  • Since no argument is passed, Python uses “Guest”.

Why Use Default Arguments?

Default arguments provide several benefits:

  • Reduce the number of required arguments.
  • Make functions easier to call.
  • Provide fallback values.
  • Improve code readability.
  • Increase flexibility.

Without default arguments:


def greet(name):
    print("Hello", name)
greet("John")

The argument is mandatory.

With default arguments:


def greet(name="Guest"):
    print("Hello", name)

The function can be called with or without an argument.

Syntax

The basic syntax is:


def function_name(parameter=default_value):
    # function body

Example:


def country(name="India"):
    print(name)
country()

Output:

India

How Default Arguments Work?

When Python calls a function:

  1. It checks whether an argument is provided.
  2. If provided, Python uses the supplied value.
  3. If not provided, Python uses the default value.

Example:


def greet(name="Guest"):
    print("Hello", name)
greet("John")

Output:

Hello John

The default value is ignored because an argument was supplied.

Single Default Argument

Example:


def welcome(user="Visitor"):
    print("Welcome", user)
welcome()
welcome("Emma")

Output:

Welcome Visitor
Welcome Emma

The function works with both default and custom values.

Multiple Default Arguments

Functions can have multiple default parameters.

Example:


def employee(name="Unknown", age=18):
    print(name, age)
employee()

Output:

Unknown 18

Overriding Default Arguments

You can replace default values by passing arguments.

Example:


def employee(name="Unknown", age=18):
    print(name, age)
employee("John", 25)

Output:

John 25

The provided values override the defaults.

Mixing Default and Non-Default Arguments

Python allows combining default and non-default arguments.

Example:


def student(name, course="Python"):
    print(name, course)
student("David")

Output:

David Python

The name argument is required, while course is optional.

Rules for Default Arguments

Default arguments must come after non-default arguments.

Correct:


def employee(name, age=18):
    print(name, age)

Incorrect:


def employee(age=18, name):
    print(name, age)

Output:

SyntaxError

Python does not allow non-default parameters after default parameters.

Default Arguments with Keyword Arguments

Example:


def student(name="Guest", age=18):
    print(name, age)
student(age=25)

Output:

Guest 25

Only the specified parameter is changed.

Default Arguments with Return Values

Example:


def calculate_tax(amount, rate=0.18):
    return amount * rate
print(calculate_tax(1000))

Output:

180.0

The default tax rate is used automatically.

Default Arguments in Real-Life Programs

Default arguments are common in professional applications because they reduce complexity and improve flexibility.

Example: User Greeting System


def greet(name="Guest"):
    print("Welcome", name)
greet()
greet("John")

Output:

Welcome Guest
Welcome John

Many websites display a generic greeting for visitors.

Example: Online Shopping Discount


def calculate_price(price, discount=0):
    return price - discount
print(calculate_price(1000))
print(calculate_price(1000, 100))

Output:

1000
900

Discounts can be optional.

Example: Employee Salary Calculation


def salary(hours, rate=20):
    return hours * rate
print(salary(40))

Output:

800

The default hourly rate is used.

Example: Banking Application


def deposit(balance, amount=0):
    return balance + amount
print(deposit(1000))

Output:

1000

If no deposit amount is provided, the balance remains unchanged.

Example: Sending Email


def send_email(subject, recipient="admin@example.com"):
    print(subject, recipient)
send_email("Monthly Report")

Output:

Monthly Report admin@example.com

A default recipient can be specified.

Default Arguments with Boolean Values

Example:


def login(required=True):
    print(required)
login()

Output:

True

Boolean defaults are commonly used for configuration settings.

Default Arguments with Strings

Example:


def language(lang="English"):
    print(lang)
language()

Output:

English

Default Arguments with Numbers

Example:


def multiply(number, factor=2):
    print(number * factor)
multiply(10)

Output:

20

Default Arguments with Lists

Example:


def show_items(items=None):
    if items is None:
        items = []
    print(items)
show_items()

Output:

[]

This is considered a safer approach when using lists as defaults.

Advantages of Default Arguments

1. Simplifies Function Calls

Users don’t need to provide every argument.

2. Reduces Code Complexity

One function can handle multiple scenarios.

3. Improves Readability

Default values clearly show expected behavior.

4. Increases Flexibility

Functions can work with or without optional values.

5. Supports Backward Compatibility

New parameters can be added without breaking existing code.

Common Mistakes

1. Incorrect Parameter Order

Incorrect:


def employee(age=18, name):
    pass

Output:

SyntaxError

Correct:


def employee(name, age=18):
    pass

2. Assuming Default Values Always Apply

Incorrect:


def greet(name="Guest"):
    print(name)
greet("John")

Output:

John

The default value is ignored because an argument was supplied.

3. Using Mutable Default Values

Incorrect:


def add_item(items=[]):
    items.append("Python")
    return items

This can produce unexpected results.

Better:


def add_item(items=None):

    if items are None:


  items = []
    items.append("Python")
    return items

4. Forgetting Required Arguments


def student(name, course="Python"):
    print(name)
student()

Output:

TypeError

The required argument must still be supplied.

5. Overusing Default Values

Too many default arguments can make functions confusing.

Best Practices

1. Use Meaningful Default Values


def greet(name="Guest"):

Choose values that make sense.

2. Keep Required Parameters First


def employee(name, age=18):

Follow Python conventions.

3. Avoid Mutable Defaults

Use None instead of empty lists or dictionaries.

4. Document Default Values

Add comments or documentation explaining defaults.

5. Use Keyword Arguments for Clarity


employee(
    name="John",
    age=25
)

Improves readability.

Conclusion

Default arguments are a powerful feature in Python that make functions more flexible and user-friendly. By assigning predefined values to parameters, developers can create functions that work even when some arguments are omitted. This reduces complexity, improves readability, and makes code easier to maintain.

Related Python Tutorials