1、内部函数,顾名思义,是函数内部定义的函数,其作用是封装逻辑,使函数逻辑更为清晰。
def outer():
inner():
业务逻辑
return inner
2、为何return inner而不是return inner()呢?
初学者可能都有此一问,我们知道,运行一个函数就是:func(),然后func会得出结果。同理,如果return inner()就是要返回inner()的运算结果,但是innner()函数没有返回值,此时return inner()只能得到None。而retrun inner是返回inner这个函数,并不会运行这个函数。
总结:
return innner返回函数逻辑代码,不运行函数
return inner()运行inner函数,将函数结果返回
3、装饰器
装饰器用到的就是内部函数。如下,若把需要装饰的函数称之为目标函数,定义装饰器decorator,把目标函数作为参数传给decorator函数,然后定义内部函数wrapper,wapper用于包装目标函数,包装完毕后将wrappper函数返回。
由此,可以看出,decorator函数只是返回wrapper的逻辑代码,并不会运行wrapper