Python -- 内部函数 & closure(闭包)

2017-03-05  本文已影响329人  浪费不过白头发

1.内部函数,只能在外部函数内调用,否则出错

>>> def fun1(): #fun2()的外部函数

             print("fun1()被调用...")

                      def fun2(): #fun1()的内部函数

                               print("fun2()被调用..")

             fun2()

>>> fun1()

fun1()被调用...

fun2()被调用..

2.闭包

对象是附加方法的数据,闭包是附加数据的函数。(Objects are data with methods attached, closures are functions with data attached.)

要形成闭包,首先得有一个嵌套的函数,即函数中定义了另一个函数,闭包则是一个集合,它包括了外部函数的局部变量,这些局部变量在外部函数返回后也继续存在,并能被内部函数引用。

>>> def FunX(x):

              def FunY(y):

                     return x * y

              return FunY

>>> g = FunX(8)

>>> g(5)

40

>>>type(g) #g的类型

<class,'function'>

>>> FunX(8)(5)

40

上一篇 下一篇

猜你喜欢

热点阅读