051 闭包函数

一、什么是闭包函数

闭包函数: 传参的另外一种方式, 参数+函数 包在一起返回出去

提示:之前我们都是通过函数传参数的方式将外部的参数传给函数。
而闭包则提供了另外一种思路,通过内部嵌套函数将函数参数和函数功能包起来,通过函数对象做返回值的方式返回出来。

二、闭包函数的应用

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域

应用领域:延迟计算(原来我们是传参,现在我们是包起来)、爬虫领域。

# 闭包函数演示1:
import requests
def geturlText(url):

    def get_res():  # 嵌套函数
        res = requests.get(url)
        print(res.text)

    return get_res  # 返回函数对象

buidu_res = geturlText("https://www.baidu.com") # 获得处理百度url结果的函数对象
# buidu_res() # 调用闭包函数
print('buidu_res.__closure__[0].cell_contents:', buidu_res.__closure__[0].cell_contents)    # 这个方法可以看到闭包函数内包起来的元素

buidu_res._closure_[0].cell_contents: https://www.baidu.com

上述代码中的 buidu_res.__closure__[0].cell_contents 方法可以打印看到闭包函数内部的包起来的元素

# 闭包函数演示2:
def f1(x):
    def f1():
        print(x)
    return f1   # 返回嵌套函数的对象

f2 = f1(2)
# f2()    # 调用闭包函数
print('f2.__closure__[0].cell_contents:', f2.__closure__[0].cell_contents)    # 这个方法可以看到闭包函数内包起来的元素

f2.__closure__[0].cell_contents: 2

上述代码中的 f2.__closure__[0].cell_contents 方法可以打印看到闭包函数内部的包起来的元素

posted @ 2019-08-12 17:18  正在学习的Barry  阅读(161)  评论(0编辑  收藏  举报
-->