Advanced Lesson 4
Python Decorators
Chapter 1: Introduction
Inner/nested functions
Before we talk about decorators, let us first talk about functions.
Here is the first point you need to know about functions. In Python, you can define another function inside a function. These are called inner or nested functions.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
If you run the code, you should get the following output.
Inside outer
Calling inner
Inside inner
Hello!
Exiting inner
Exiting outer
Notice that the variable text
is accessible from Line 6 inside the inner function.
You would usually not have any need to use nested/inner functions, so please avoid doing this unless you have a good reason to do so!
One possible reason is encapsulation, that is to hide the inner function so that you cannot call the inner function from outside the function definition of outer
(that was a confusing sentence!)
Try calling inner()
after outer("Hello!")
in Line 14 in the code above. It should not work!
Traceback (most recent call last):
File "inner2.py", line 14, in <module>
inner()
NameError: name 'inner' is not defined