初识闭包

首先,闭包是一个嵌套函数,内部函数对外部函数变量进行调用,外部函数的返回值是内部函数名

内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数

 

def func():
    a = 1
    def inner():
        print(a)
  return inner
ret = func()
ret()#1

闭包可以实现先将一个参数传递给一个函数,而并不立即执行,以达到延迟求值的目的。

每一次调用函数,函数里面的变量都会频繁的创建消失,都需要花费时间

from urllib.request import urlopen
def func(url):
    ret = urlopen(url)
    print(ret.read())

func("https://i.cnblogs.com/EditPosts.aspx?opt=1")

每次调用这个函数的话,就会运行一次,所以闭包的好处就体现出来了
可以先传递参数给函数,但并不立即执行,而且节省内存

def func():
    url = "https://i.cnblogs.com/EditPosts.aspx?opt=1"

    def inner():
        return urlopen(url).read()
    return inner

ret = func()
s = ret.read()
print(s)

 

posted @ 2018-06-13 17:19  詹岩鹏  阅读(114)  评论(0编辑  收藏  举报