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
方法可以打印看到闭包函数内部的包起来的元素