From CS 61A Wiki
Revision as of 15:52, 31 May 2014 by Axis (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Jump to: navigation, search

A function is a programming construct that performs computations on values. A function can take in argument(s) as input and can return a result.

Pure function

A pure function produces no effects other than returning a value. Its return value depends only on the inputs. Given the same arguments, it always returns the same value.


  • add always returns the sum of the arguments and has no side effects.
  • square

Non-pure function

A non-pure function or impure function produces a side effect (e.g., changing external state, printing to screen). Its return value may depend on external state.



The print function displays a value on the screen and returns None.

Functions that modify a variable in another frame

The following get_a() function modifies the variable a in the global frame:

a = 0
def get_a():
    global a
    a += 1
    return a - 1

The following tick function modifies the variable n in the countdown frame:

def countdown(n):
    def tick():
        nonlocal n
        n -= 1
        return n
    return tick

Functions that mutate an object in another frame

The following add_square function mutates lst in the global frame:

lst = []
def append_square(n):