0Pricing
Python Academy · Lesson

Default and Keyword Arguments

Use default parameter values and keyword call syntax.

Default and Keyword Arguments is a free Python Academy lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Python Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Introduction

Default parameter values and keyword call syntax make Python functions flexible and self-documenting.

Default Parameter Values

def greet(name, greeting='Hello'): gives greeting a default. Callers can omit it.
def greet(name, greeting='Hello'):
    print(f'{greeting}, {name}!')
greet('Alice')
greet('Bob', 'Hi')

Keyword Arguments

Call with names: greet(name='Alice', greeting='Hi'). Order doesn't matter when using keyword arguments.
def describe(name, age, city):
    print(f'{name}, {age}, {city}')
describe(age=30, city='NYC', name='Alice')

Mixing Positional and Keyword

Positional args must come before keyword args in the call. describe('Alice', city='NYC', age=30) is valid.
def f(a, b, c='default'):
    print(a, b, c)
f(1, c='X', b=2)

Mutable Default Trap

NEVER use mutable defaults: def f(lst=[]) shares the same list across all calls. Use def f(lst=None): lst = lst or [] instead.
def append(x, lst=None):
    if lst is None:
        lst = []
    lst.append(x)
    return lst
print(append(1))
print(append(2))

Keyword-Only Arguments

Parameters after * must be called by keyword: def f(a, *, b): only b can't be positional. Enforces clarity.
def f(a, *, b):
    return a + b
print(f(1, b=2))

Positional-Only Arguments (3.8+)

Parameters before / must be positional: def f(a, b, /, c): a and b can't be called by keyword.
def f(a, b, /, c=0):
    return a + b + c
print(f(1, 2, c=3))

**kwargs

def f(**kwargs) collects extra keyword args into a dict. Useful for forwarding options.
def show(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}={v}')
show(name='Alice', age=30)

Combining *args and **kwargs

def f(*args, **kwargs) accepts any combination of positional and keyword arguments.
def debug(*args, **kwargs):
    print('args:', args)
    print('kwargs:', kwargs)
debug(1,2,x=3)

Unpacking in Calls

f(*[1,2,3]) spreads a list as positional args. f(**{'a':1}) spreads a dict as keyword args.
def add(a, b, c): return a+b+c
d = {'a':1,'b':2,'c':3}
print(add(**d))

Partial Application

from functools import partial; double = partial(pow, exp=2) fixes some arguments ahead of time.
from functools import partial
def power(base, exp): return base ** exp
square = partial(power, exp=2)
print(square(5))

Quick Check

What is the danger of using a mutable default argument like def f(lst=[])?

Recap

Default args: def f(x=val). Keyword calls: f(x=val). Avoid mutable defaults. Use * for keyword-only, / for positional-only, **kwargs to collect extras.

Keep Going

Great work! Move on to the next lesson to keep progressing.

Frequently asked questions

Is the “Default and Keyword Arguments” lesson free?

Yes — the full text of “Default and Keyword Arguments” is free to read here on the web, and the Python Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Python Academy course, upgrade to CoddyKit PRO.

What will I learn in “Default and Keyword Arguments”?

Use default parameter values and keyword call syntax. You practise Python Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Python Academy?

No prior experience is required. Python Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Default and Keyword Arguments” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Python Academy lesson?

Yes. Every Python Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Defining and Calling Functions
  2. Default and Keyword Arguments
  3. args and kwargs
  4. Return Values and Scope
← Back to Python Academy