Python: Function with Optional Parameter, Named Parameter, Infinite Parameters

, , …,

The following is a example of defining a function.

# -*- coding: utf-8 -*-
# python

def ff(x, y):
    """ff(x, y) returns x+y."""
    return x+y

print ff(3,4)                # prints 7

A string immediately following the function def line is the function's documentation.

return is optional. If a function does not return anything, it returns None.

Unspecified Number of Positional Parameters

To define unspecified number of positional parameters, use *name as last item. Your function will receive it as a tuple.

# -*- coding: utf-8 -*-
# python

# function with unspecified number of arguments. use * before the name.
def ff(*xx):
    # xx is received as a tuple.
    print "first arg:", xx[0]
    print "total args:", len(xx)
    return xx

rr = ff(3, 4, 5)

print rr                        # (3,4,5)

print type(rr)                  # <type 'tuple'>

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.

# -*- coding: utf-8 -*-
# python

# 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

You can define a function to receive 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.

# -*- coding: utf-8 -*-
# python

# use γ€Œ**β€Ήname›」 to receive unspecified number of keyword arguments
def ff(**ddd):
    # ddd is received as a dictionary
    return ddd

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

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

# -*- coding: utf-8 -*-
# python

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

ff(3, rabbit = 7, cat = "a", tiger = 33, c = 8)

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

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

# -*- coding: utf-8 -*-
# python

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: {'tiger': 33, 'rabbit': 7, 'cat': 9}
blog comments powered by Disqus