程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Python21之内嵌函数和闭包

发布于2020-01-01 13:31     阅读(1134)     评论(0)     点赞(25)     收藏(3)


一、内嵌函数

  内嵌函数指的是在一个函数体内部定义的函数,可以称它为函数的函数,也就是子函数,外部的函数称之为母函数,就类似局部变量和全局变量

子函数体内定义的变量只在其函数内部有效,但其内部可以调用母函数定义的变量,但无法直接修改母函数体内定义的变量。

 

二、闭包

  闭包是一种满足特定要求的内嵌函数(子函数),其外部的函数称为母函数,则当子函数体内有对母函数体内定义的变量的引用时我们称这个子函数为一个闭包

但当母函数和其闭包都定义了参数时,由于在母函数体外是无法直接对闭包进行函数的调用的,为了能够实现对闭包的调用,需要在母函数内增加一条返回闭包函数名本身的语句,这个时候调用母函数后返回的是一个闭包的函数对象,就可以通过这种方法间接的调用闭包函数

  下诉代码中,我们也可以使用fun1(7)(8)

 1 def fun1(x):
 2     def fun2(y):
 3         return x*y
 4     return fun2
 5 
 6 i = fun1(7)
 7 type(i)
 8 <class 'function'>
 9 i(8)
10 56
View Code

 

三、在内嵌函数中(子函数)修改外部函数(母函数)的变量的进行修改

  Python3可以实现,多使用一条声明语句:nonlocal                  注意与global语句的区别,global语句是在函数体内修改全局变量的值,

  格式:nonlocal 外部函数的变量名

 1 def mother():
 2     var = 110
 3     print('mother中的var的值为',var)
 4     def son():
 5         nonlocal var
 6         var = 119
 7         print('Son中的var的值为',var)
 8     print('函数中的var的值为',var)
 9     return son
10 
11     
12 >>> mother()()
13 mother中的var的值为 110
14 函数中的var的值为 110
15 Son中的var的值为 119
16 这时我们打印var的值,其为119,
17 因为程序的运行过程是,mother运行结束返回son->son运行
View Code

 



所属网站分类: 技术文章 > 博客

作者:天下

链接:https://www.pythonheidong.com/blog/article/198555/d3e485201735b01f597c/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)