返回函数
函数在python中是可以的作为返回值的
>>> def cal_sum(*args): s=0 for i in args: s+=i return s >>> cal_sum(1,2,3,4,5) 15
假如现在不着急立刻求和,向一会儿在计算可以返回函数
>>> def lazy_sum(*args): def sum(): s=0 for i in args: s+=i return s return sum >>> f=lazy_sum(1,5,6) >>> f <function lazy_sum.<locals>.sum at 0x00000000033F8B70> >>> f() 21 >>>
我们通过观察可以发现,定义的sum函数可以使用lazy_sum中传入的参数args,而当lazy_sum函数将sum函数返回给f的时候,f包含了args参数,可以说lazy_sum是将函数sum和参数args一并打包送给了f,这个包叫做闭包
注意:尽管每次传入的同样的参数,但是最后得到的函数是不一样的
>>> f1=lazy_sum(1,6) >>> f2=lazy_sum(1,6) >>> f1==f2 False
函数lazy_sum中又定义了函数sum,内部函数sum
使用外部函数lazy_sum的参数和局部变量
闭包
闭包遵循的三条规则
注意:
一般情况下,如果一个函数结束,那么该函数中定
义的局部变量就都会释放。
>>> def make_inc(x): def inc(y): return x+y return inc >>> inc5=make_inc(5) >>> inc5(6) 11
闭包的主要作用在于可以封存函数执行的上下文环境。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。