python 闭包函数的作用_python 闭包函数

闭包函数

一、什么 是闭包

闭包:闭是封闭(函数内部的函数),包是包含(该函数内部函数对外部作用域而非全局作用据的变量的应用)。

闭包是指:函数内部对外部作用于而非全局作用域的引用。

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

def outter():

x = 1

def inter():

print(x)

return inter

f = outter()

def f2():

x = 2

f()

f2()

#输出:

1

俩种为函数传参的方式

为函数传参的方式一:使用参数的形式

def func(x):

print(x)

func(1)

func(2)

func(3)

#输出:

1

2

3

为函数传参的方式二:包给函数

def outter(x):

x = 1

def inner():

print(x)

return inner

f = outter(1)

f()

# 查看闭包的元素

print(f.__closure__[0].cell_contents)

#输出:

1

1

1

二、闭包函数的应用

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

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

import requests

def get(url):

response = requests.get(url)

print(url)

get('https://www.baidu.com')

get('https://www.baidu.com')

get('https://www.baidu.com')

# 输出:

https://www.baidu.com

https://www.baidu.com

https://www.baidu.com

上面的方式比较复杂,如果用默认参数解决网站,可以考虑用闭包的方式。

import requests

def outter(url):

def get():

response = requests.get(url)

print(url)

return get

baidu = outter('http://www.baidu.com')

baidu()

baidu()

baidu()

#输出:

http://www.baidu.com

http://www.baidu.com

http://www.baidu.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值