首页 > 其他 > 详细

闭包函数

时间:2020-12-26 17:52:36      阅读:28      评论:0      收藏:0      [点我收藏+]

 
* 函数对象:可以将定义在函数内的函数返回到全局使用,从而打破函数的层级限制。
* 名称空间与作用域:作用域关系在函数定义阶段时就已经固定死了。与调用位置无关,即在任意位置调用函数都需要跑到定义函数时找到作用域关系
def f1():
    x = 1
 
    def inner():
        print(x)
 
    return inner
 
func = f1()
x = 2
 
def f2():
    x = 3
    func()
 
f2()
outputs
1     
 
 
 
闭包:闭是封闭(函数内部函数),包是包含(该内部函数对外部作用域而非全局作用域的变量的引用)。闭包指的是:函数内部函数对外部作用域而非全局作用域的变量的引用。
提示:之前外面都是通过参数将外部的值传给函数,闭包提供了另一种思路,包起来喽,包起呦,包起来哇。
def outter():
    x = 1
 
    def inner():
        print(x)
    return inner
 
f = outter()
 
def f2():
    x = 2
    f()
 
f2()
outputs
1    
 
 
 
为函数传参的方式二:包给函数
先定义一个有参函数,在这个有参函数内定义一个无参函数,然后在无参函数内写入需要的代码块,然后返回无参函数的函数名,这样就可以在函数外部,将有参函数赋值给变量名的方式来进行多次调用。
def outter(x):
    x = 1
 
    def inner():
        print(x)
 
    return inner
 
f = outter(6)
f()
f()
# 查看闭包的元素
print(f"f.__closure__[0].cell_contents:{f.__closure__[0].cell_contents}")
Outputs
macname@MacdeMacBook-Pro py % python3 cccccc.py
1
1
f.__closure__[0].cell_contents:1
macname@MacdeMacBook-Pro py %

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

闭包函数

原文:https://www.cnblogs.com/sea-stream/p/14192816.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!