I will explain how to define and use Python functions with optional arguments. As a developer, it’s important to know how to use Python functions with optional arguments, then I explored more about this topic and throughout this tutorial, I will give relevant examples and screenshots.
Optional Arguments in Python
Optional arguments in Python allow you to call a function without providing all the arguments. This is particularly useful when you want to provide default values for some parameters while allowing others to be specified by the caller.
Read How to Use the Mean() Function in Python?
Use Python Functions with Optional Arguments
In Python, you can define optional arguments by assigning default values to parameters in the function definition. Here’s a simple example:
def greet(name, greeting="Hello"):
return f"{greeting}, {name}!"
print(greet("Alice"))
print(greet("Bob", "Hi")) Output:
Hello, Alice!
Hi, Bob!You can refer to the screenshot below to see the output.

In this example, the greeting parameter is optional. If not provided, it defaults to “Hello”. This makes the function call more flexible.
Check out How to Pass a Function as a Parameter in Python?
Use Keyword Arguments
Python also allows you to use keyword arguments, which can make your function calls more explicit and readable:
def schedule_meeting(time, location="Office", duration=1):
return f"Meeting scheduled at {time} in the {location} for {duration} hour(s)."
print(schedule_meeting("10:00 AM"))
print(schedule_meeting("2:00 PM", location="Conference Room", duration=2)) Output:
Meeting scheduled at 10:00 AM in the Office for 1 hour(s).
Meeting scheduled at 2:00 PM in the Conference Room for 2 hour(s).You can refer to the screenshot below to see the output.

In this example, location and duration are optional arguments with default values. By using keyword arguments, you can specify only the parameters you want to change.
Read How to Use Built-In Functions in Python?
Advanced Techniques with Optional Arguments
Use *args and **kwargs
For even more flexibility, Python provides *args and **kwargs to handle a variable number of arguments. *args is used to pass a variable number of non-keyword arguments, while **kwargs is used to pass a variable number of keyword arguments.
Example with *args:
def calculate_total(*prices):
return sum(prices)
print(calculate_total(19.99, 29.99, 4.99))
print(calculate_total(15.99, 9.99)) Output:
54.97
25.98You can refer to the screenshot below to see the output.

In this example, calculate_total can accept any number of price arguments, making it very flexible.
Example with **kwargs:
def display_user_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
display_user_info(name="John Doe", age=30, city="New York")Output:
name: John Doe
age: 30
city: New YorkYou can refer to the screenshot below to see the output.

Here, display_user_info can accept any number of keyword arguments, allowing you to pass a variety of user information.
Read How to Create a Square Function in Python?
Examples
Let us learn more with the help of practical examples.
Example 1: Create a Flexible Greeting Function
Let’s create a more advanced greeting function that can handle different formats and optional parameters:
def greet(name, greeting="Hello", punctuation="!"):
return f"{greeting}, {name}{punctuation}"
print(greet("Alice")) # Output: Hello, Alice!
print(greet("Bob", "Hi")) # Output: Hi, Bob!
print(greet("Charlie", "Good morning", ".")) # Output: Good morning, Charlie.In this example, greeting and punctuation are optional arguments with default values. This allows you to customize the greeting message as needed.
Check out How to Use Counter Function in Python?
Example 2: Schedule Events
Consider a function for scheduling events that can handle optional parameters for location and duration:
def schedule_event(name, date, time, location="Office", duration=1):
return f"Event '{name}' scheduled on {date} at {time} in the {location} for {duration} hour(s)."
print(schedule_event("Team Meeting", "2024-11-15", "10:00 AM"))
# Output: Event 'Team Meeting' scheduled on 2024-11-15 at 10:00 AM in the Office for 1 hour(s).
print(schedule_event("Project Kickoff", "2024-11-20", "2:00 PM", location="Conference Room", duration=2))
# Output: Event 'Project Kickoff' scheduled on 2024-11-20 at 2:00 PM in the Conference Room for 2 hour(s).This function allows you to schedule events with optional location and duration parameters, providing flexibility in how you manage your calendar.
Read How to Use Exponential Functions in Python?
Best Practices for Using Optional Arguments
Let us see some best practices for using optional arguments.
1. Use Default Values Wisely
Ensure that the default values you choose make sense in the context of your function. Defaults should provide a reasonable behavior when not explicitly specified.
2. Keep Functions Simple
While optional arguments add flexibility, avoid making functions overly complex. If a function requires too many optional arguments, consider breaking it into smaller, more focused functions.
3. Document Your Functions
Always document your functions to specify which arguments are optional and what their default values are. This helps other developers understand how to use your functions correctly.
4. Use Keyword Arguments for Clarity
Encourage the use of keyword arguments in function calls to make the code more readable and explicit. This is especially helpful when dealing with functions that have many parameters.
Check out How to Use the Python Main Function with Arguments?
Conclusion
In this tutorial, I have explained how to use Python functions with optional arguments. I discussed using keyword arguments, advanced techniques with optimizing arguments, using *args and **kwargs. I also covered practical examples and some best practices for using optional arguments.
You may like to read:
- How to Use the strip() Function in Python?
- How to Use the trim() Function in Python?
- How to Use the Floor() Function in Python?

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.