Formal names of nested functions I have a nested function as follow:

def make_adder(n):
    def add(x):
        return x + n
    return add
&gt;&gt;&gt; plus_3 = make_adder(3)
&gt;&gt;&gt; plus_5 = make_adder(5)
&gt;&gt;&gt; plus_3(4) 7
&gt;&gt;&gt; plus_5(4) 9


What's the formal names of make_adder and add?
Can I call them 'outer function' and 'inner function'?
A function that either takes a function as argument or returns a function as result is called a High Order Function in functional programming. Your function make_adder is doing the latter.