发布于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
三、在内嵌函数中(子函数)修改外部函数(母函数)的变量的进行修改
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运行
作者:天下
链接:https://www.pythonheidong.com/blog/article/198555/d3e485201735b01f597c/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!