Python: Function Optional Parameter

By Xah Lee. Date: . Last updated: .

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

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.

# -*- 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}

Reference

If you have a question, put $5 at patreon and message me.

Python by Example

  1. Python Basics
  2. Print Version String
  3. Builtin Help

String

  1. Quote String
  2. String Operations
  3. String Methods
  4. Format String

Branching, Loop

  1. True, False
  2. if then else
  3. for, while, Loops

List

  1. List Basics
  2. Loop Thru List
  3. Map Function to List
  4. List Comprehension
  5. List Methods

Dictionary

  1. Dictionary
  2. Loop Thru Dictionary
  3. Dictionary Methods

Function

  1. Function Parameter

Class

  1. Class and Object

Module

  1. List Modules
  2. Write a Module

Unicode

  1. Python + Unicode 🐍
  2. Process Unicode
  3. Convert File Encoding

Common Tasks

  1. Read/Write File
  2. Traverse Directory
  3. Complex Numbers
  4. Get Env Var
  5. JSON

Regex

  1. Regex Basics
  2. Split Line by Regex
  3. Regex Reference

Advanced

  1. Copy Nested List
  2. Tuple vs List
  3. Sets, Union, Intersection
  4. Closure in Python 2
  5. Decorator
  6. Append String in Loop
  7. Timing Functions with timeit
  8. Keyword Argument Default Value Unstable
  1. Find Python Script Path
  2. Manipulate Path
  3. Sort Matrix, Object

Find/Replace

  1. Find/Replace Strings on Multiple Files
  2. Find/Replace Multi-line Strings in a Dir
  3. Find/Replace Mulitple Pairs of Strings
  4. Find/Replace by Regex
  5. Find/Replace Strings in Unicode Files
  6. Python, Perl: Find/Replace Strings in a File

HTML/Web

  1. Sending Email
  2. GET Web Page
  3. Web Crawler
  4. HTTP POST
  1. A Script to check HTML file size
  2. Thumbnail Generation

Misc

  1. System Call
  2. Decompress Gzip

reference