Your example has two functions: the outer function myfunc and the inner function lambda. Normally you can call a lambda function directly:
n = 2
print((lambda a: a * n)(11))
# 22
Or you can assign some variable to this function and call it through this variable:
inner = lambda a: a * n
print(inner(11))
# 22
You can also define some outer function, which will return the inner lambda function:
def myfunc():
n = 2
return lambda a: a * n
mydoubler = myfunc()
print(mydoubler(11))
# 22
What is equivalent to:
mydoubler = lambda a: a * 2
print(mydoubler(11))
# 22
In the example above the variable n was declared inside myfunc and in your case n is the parameter of myfunc, which is passed to the lambda function. The function myfunc returns thelambda function with n equal to the argument, which you pass to myfunc by the function call. So the function call myfunc(2) returns the fuction lambda a: a * 2.
mydoubleris a reference to the lambda returned bymyfunc, and takes anaas input. 11 is passed as thisa.mydoublerislambda a: a * n, and so 11 isa, the only argument of that lambda.