Python Nested Functions
New Course Coming Soon:
Get Really Good at Git
Functions in Python can be nested inside other functions.
A function defined inside a function is visible only inside that function.
This is useful to create utilities that are useful to a function, but not useful outside of it.
You might ask: why should I be “hiding” this function, if it does not harm?
One, because it’s always best to hide functionality that’s local to a function, and not useful elsewhere.
Also, because we can make use of closures (more on this later).
Here is an example:
def talk(phrase):
def say(word):
print(word)
words = phrase.split(' ')
for word in words:
say(word)
talk('I am going to buy the milk')
If you want to access a variable defined in the outer function from the inner function, you first need to declare it as nonlocal
:
def count():
count = 0
def increment():
nonlocal count
count = count + 1
print(count)
increment()
count()
This is useful especially with closures, as we’ll see later.
Here is how can I help you:
- COURSES where I teach everything I know
- THE VALLEY OF CODE your web development manual
- BOOTCAMP 2024 cohort in progress, next edition in 2025
- BOOKS 16 coding ebooks you can download for free on JS Python C PHP and lots more
- SOLO LAB everything I know about running a lifestyle business as a solopreneur
- Interesting links collection
- Follow me on X