0Pricing
Python Academy · Lesson

Functions as First-Class Objects

Understand closures and passing functions as arguments.

Functions as First-Class Objects is a free Python Academy lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Python Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Introduction

In Python, functions are first-class objects: they can be passed as arguments, returned, and stored in data structures.

Functions are Objects

def double(x): return x*2 creates a function object. double is just a name. You can assign it: fn = double; fn(5) works.
def double(x): return x * 2
fn = double
print(fn(5))
print(type(fn))

Passing Functions as Arguments

def apply(func, val): return func(val) — func is a callable argument. This is higher-order programming.
def apply(func, val): return func(val)
print(apply(abs, -7))
print(apply(str, 42))

Storing Functions in Containers

ops = [add, sub, mul] stores function objects in a list. Iterate and call: for op in ops: op(a, b).
ops = [str.upper, str.lower, str.strip]
for op in ops:
    print(op('  Hello  '))

Returning Functions

A function can return another function. def make_adder(n): def adder(x): return x+n; return adder
def make_adder(n):
    def adder(x): return x + n
    return adder
add10 = make_adder(10)
print(add10(5), add10(20))

Closures

A closure captures variables from the enclosing scope. The inner function 'closes over' n in make_adder.
def counter(start=0):
    count = [start]
    def inc():
        count[0] += 1
        return count[0]
    return inc
c = counter()
print(c(), c(), c())

Lambda as Anonymous Function

lambda x: x*2 is a one-expression anonymous function. Useful as short callbacks but name it if the logic is non-trivial.
nums = [3, 1, 4, 1, 5]
print(sorted(nums, key=lambda x: -x))

map() and filter()

map(func, iterable) applies func to each element. filter(pred, iterable) keeps elements where pred is True.
nums = [1, 2, 3, 4, 5]
print(list(map(lambda x: x**2, nums)))
print(list(filter(lambda x: x%2==0, nums)))

functools.reduce()

reduce(func, seq) folds a sequence: reduce(lambda a,b: a+b, [1,2,3,4]) gives 10.
from functools import reduce
print(reduce(lambda a,b: a*b, [1,2,3,4,5]))

Callable Check

callable(obj) returns True if obj can be called. Functions, classes, and objects with __call__ are callable.
print(callable(print))
print(callable(42))
class C:
    def __call__(self): pass
print(callable(C()))

Function Introspection

func.__name__, func.__doc__, func.__annotations__, inspect.signature(func) give metadata about the function.
import inspect
def greet(name: str) -> str:
    '''Returns a greeting.'''
    return f'Hi {name}'
print(greet.__name__, greet.__annotations__)
print(inspect.signature(greet))

Quick Check

What is a closure in Python?

Recap

Functions are first-class objects. Pass as args, return from functions, store in containers. Closures capture enclosing scope. lambda for simple one-liners.

Keep Going

Excellent progress! Keep going to master the next concept.

Frequently asked questions

Is the “Functions as First-Class Objects” lesson free?

Yes — the full text of “Functions as First-Class Objects” is free to read here on the web, and the Python Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Python Academy course, upgrade to CoddyKit PRO.

What will I learn in “Functions as First-Class Objects”?

Understand closures and passing functions as arguments. You practise Python Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Python Academy?

No prior experience is required. Python Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Functions as First-Class Objects” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Python Academy lesson?

Yes. Every Python Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Functions as First-Class Objects
  2. Writing Custom Decorators
  3. The @property Decorator
  4. @classmethod and @staticmethod
← Back to Python Academy