2018-02-06python学习第四天

在python中可以在函数中定义函数。
一般情况下,为了方便可以写一些简单的类似内联函数一样,放在函数里面,然后在函数里面进行大量重复调用。
如:

def foo():
    def bar():
        print("hello,world !")
    bar()

真正可怕的应用是函数闭包的实现。如下所示

# 函数闭包的实现
def multiplier(factor):
    def multiplyByFactor(number):
        return number *  factor
    return multiplyByFactor  #本质上返回的是函数引用,函数指针

double = multiplier(2)
print(double(5))

triple = multiplier(3)
print(triple(9))

print(multiplier(4)(5)) # 这里有点像链式调用了

解释一下这里面的神奇之处: 一个函数为与另一个函数里面,外层的函数返回里层的函数(函数指针),但是这个函数没有立即被调用。重要的是返回的函数还可以访问它的定义所在的作用域,以及这个作用域中的变量,换句话说:
“它带着它的环境和相关的局部变量。”

你可能感兴趣的:(2018-02-06python学习第四天)