极简方式理解python闭包操作

来源:互联网 发布:超级优化基因液 编辑:程序博客网 时间:2024/06/06 03:11
在学习闭包的过程中有不少疑惑,查看了一些书籍资料和很多前辈的博客,感觉大都写的比较严谨或者比较学术化,还是不能帮助新手理解闭包的操作过程,以下内容主要是基于个人为了好理解闭包操作而总结,并不严谨,仅供参考。

首先看什么是内部函数?
在函数内部声明的函数就是内部函数
格式:

def 函数名():    局部变量...    def 内部函数名():        Python功能代码...

示例:

def funName():    name = 'dragon'    #定义一个内部函数    def inner():        print('我是内部函数')'''注释:    1.内部函数的本质就是局部变量(函数就是一个变量)    2.内部函数在函数外部不可以直接调用    3.内部函数在函数内部调用(当然,必须要定义内部函数之后才能调用)'''

内部函数是函数内部声明的函数,不能直接在外部函数调用,因此:把内部函数(或者局部变量)能够调到全局环境中使用的方法就是闭包操作

以下是闭包最常用方法
思路:为了把函数内部的局部变量和内部函数调到全局变量,就在函数内部再写一个函数,这个函数可以没有具体函数式,新建函数的目的就是利用return语句调出我们想要的局部变量和内部函数
格式:

def 函数名():    局部变量...    def 内部函数名():        pass    return (局部变量,内部函数...)

示例:

# 定义一个函数def outer():      # 定义几个局部变量    money = 100    count = 10    strs = 'boys'      # 定义一个内部函数 (比如算两个数的和)    def inner(a,b):        result = a + b        print(result)      # 新建函数myfunc用于调出我们想要的内部函数和局部变量    def myfunc():        pass        return money,inner  #带出我们想要的money变量和inner函数    return myfunc        #带出装有我们想要的变量的函数myfunc

接下来一层层运行函数就可以得到我们想要的局部变量和内部函数了

# 运行outer函数返回得到myfunc函数,用func1接收func1 = outer()# 运行func1函数返回得到money变量和inner函数组成的元组,再通过索引分别得到func2 = func1()   #用func2接收func1运行得到的元组# 获取money变量vars = func2[0]# 获取inner函数func = func2[1]

这样我们就成功把局部变量money和内部函数inner拿到全局环境中了!

Python学习交流、资源共享群:563626388 QQ

原创粉丝点击