Python: Function

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
  4. Quote String
  5. String Operations
  6. String Methods
  7. Format String
  8. True, False
  9. if then else
  10. for, while, Loops
  11. List Basics
  12. Loop Thru List
  13. Map Function to List
  14. List Comprehension
  15. List Methods
  16. Dictionary
  17. Loop Thru Dict
  18. Dict Methods
  19. Function
  20. Class
  21. List Modules
  22. Write a Module
  23. Unicode 🐍

Regex

  1. Regex Basics
  2. Regex Reference

Text Processing

  1. Read/Write File
  2. Traverse Directory
  3. Manipulate Path
  4. Process Unicode
  5. Convert File Encoding
  6. Find Replace in dir
  7. Find Replace by Regex
  8. Count Word Frequency

Web

  1. Send Email
  2. GET Web Page
  3. Web Crawler
  4. HTTP POST
  5. Check Page Load Size
  6. Thumbnail Generation

Misc

  1. JSON
  2. Find Script Path
  3. Get Env Var
  4. System Call
  5. Decompress Gzip
  6. Complex Numbers

Advanced

  1. Sort
  2. Copy Nested List
  3. Tuple vs List
  4. Sets, Union, Intersection
  5. Closure in Python 2
  6. Decorator
  7. Append String in Loop
  8. Timing f timeit
  9. Keyword Arg Default Value Unstable

Reference