Python: Function Keyword Arguments

By Xah Lee. Date: .

Named Parameters (Keyword Arguments)

A function can have Named Parameters, called Keyword Argument in Python.

Python's “keyword argument” are automatically optional. If no argument is given in a function call, a default value is used.

# function with keyword parameters.

# Keyword parameters are automatically optional, with default values.
# They must come after positional parameters, if any
def ff(x, y=100, z=200):
    return "x ⇒ {}, y ⇒ {}, z ⇒ {}".format(x, y, z)

print(ff(3))
# x ⇒ 3, y ⇒ 100, z ⇒ 200

# optional parameter name can be omitted. If so, they go by order.
print(ff(3, 2))
# x ⇒ 3, y ⇒ 2, z ⇒ 200

print(ff(3, 5, 6))
# x ⇒ 3, y ⇒ 5, z ⇒ 6

# keyword argument must come after positional arguments
print(ff(3, y=2))
# x ⇒ 3, y ⇒ 2, z ⇒ 200

print(ff(3, z=2))
# x ⇒ 3, y ⇒ 100, z ⇒ 2

# keyword arguments can be any order
print(ff(3, z=8, y=9))
# x ⇒ 3, y ⇒ 9, z ⇒ 8

Unspecified Number of Unnamed Keyword Parameters

For unspecified number of unnamed keyword parameters. You need to put a **name as last item in your parameter list in definition. Your function will receive it as a dictionary.

# unspecified number of keyword args
def ff(**dd):
    return dd

rr = ff( z = 8, c = 7, aa = 4, b = 3)

print(rr)
# {'z': 8, 'c': 7, 'aa': 4, 'b': 3}

print(type(rr))
# <class 'dict'>

The **name can be used with normal paramaters. But it must be the last.

def ff(a, b=1, c=1, **xyz):
    # xyz is a dictionary
    print("a is: ", a)
    print("b is: ", b)
    print("c is: ", c)
    print("xyz is: ", xyz)

# note, no b
ff(3, rabbit = 7, cat = "a", tiger = 33, c = 8)

# a is:  3
# b is:  1
# c is:  8
# xyz is:  {'rabbit': 7, 'cat': 'a', 'tiger': 33}

The positional parameters, and *tup tuple and **dict dictionary can be used together, but tuple must come first.

def ff(a, *mmm, **zzz):
    # mmm is a tuple
    # zzz is a dictionary
    print("a is:", a)
    print("mmm is:", mmm)
    print("zzz is:", zzz)

ff(3, 4, 5, 6, rabbit = 7, cat = 9, tiger = 33)

# a is: 3
# mmm is: (4, 5, 6)
# zzz is: {'rabbit': 7, 'cat': 9, 'tiger': 33}

Python Function and Class