Lesson 62 +10 XP

Arguments and Keyword Arguments

Python gives you flexible ways to pass arguments.

Positional arguments

Values map to parameters in order:


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

full("Emil", "Refsnes")

### Emil Refsnes

Keyword arguments

Name the parameter when calling; order no longer matters:


python
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:


python
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:


python
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


python
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.