Lesson 10
I am Your Father
Chapter 4: More functions
Arbitrary number of keyword arguments
Let’s say that you are allowing users to enter lots of keyword arguments. This might start to become hard to manage!
def customise_page(background="white", width=500, height=1000, avatar=None,
title="Title", subtitle="", author="", year=None, font_size="24",
font_face="Arial", text_color="black"):
pass
To make this more manageable, you can use double asterisks (**
) to take in an arbitrary number of keyword arguments. This time, you will end up with a dict
containing (key, value) pairs provided by the user. You can then process these pairs as needed (perhaps you can have a separate function called parse_args()
to handle these in a modular way).
def customise_page(**kwargs):
parse_args(kwargs)
def parse_args(options):
for key, value in options.items():
if key == "background":
set_background(value)
elif key == "width":
set_width(value)
elif key == "avatar":
set_avatar(value)
else:
print(f"Unknown keyword {key}.")
return
customise_page(background="red", width=500, avatar="selfie.jpg")