Lesson 62 +10 XP

Arguments and Keyword Arguments

Arguments and Keyword Arguments

Python gives you flexible ways to pass arguments.

Positional arguments

Values map to parameters in order:

def full(fname, lname):
    print(fname, lname)

full("Emil", "Refsnes")  # Emil Refsnes

Keyword arguments

Name the parameter when calling; order no longer matters:

def full(fname, lname):
    print(fname, lname)

full(lname="Refsnes", fname="Emil")  # Emil Refsnes

Default parameter value

If no argument is given, the default is used:

def country(country_name="Norway"):
    print("I am from " + country_name)

country()              # I am from Norway
country("Sweden")      # I am from Sweden

Default vs required

A parameter with a default is optional; one without it is required.

*args: arbitrary positional arguments

When you don't know how many arguments, use *args:

def my_function(*kids):
    print("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")  # Linus

The values arrive as a tuple.

**kwargs: arbitrary keyword arguments

def my_function(**kid):
    print("His last name is " + kid["lname"])

my_function(fname="Tobias", lname="Refsnes")  # Refsnes

The values arrive as a dictionary.

TL;DR

  • Positional args follow parameter order; keyword args name them.
  • Defaults make parameters optional.
  • *args collects extra positional args as a tuple.
  • **kwargs collects extra keyword args as a dict.