嵌套函数内部的函数

时间:2014-04-05 20:03:37

标签: python

是否可以在函数内嵌套函数?如果是这样,它有什么用途?我在下面有一些示例代码来说明我的意思。

def theFunction():
    print "This is a function"
    def functionception():
        print "Bad inception joke...."

再一次,这可能吗?如果是这样,它的用途是什么,以及它是如何使用的?

2 个答案:

答案 0 :(得分:3)

是的,你可以。

你可以让外部函数对传递给外部函数的变量进行一些边界条件检查,并传递"有效/消毒的"变量到内部函数做实际的处理/操作。这实际上是装饰者的工作方式。

此博客详细解释了外部函数内部函数组合在装饰器中的作用 - http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/

答案 1 :(得分:2)

是的,这是可能的,并且经常在装饰其他功能时使用,例如

def memo(f):
    cache = {}
    def func(*args):
        if args not in cache:
            cache[args] = f(*args)
        return cache[args]
    return func

使用示例:

@memo
def memoized_func(some_arg):
    return some_arg ** 2

这里内部函数func用于包装参数函数f,提供附加功能(在这种情况下保存以前计算的结果)。