闭包(内部函数用了外部函数的数据)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包(内部函数用了外部函数的数据)相关的知识,希望对你有一定的参考价值。

闭包(内部函数用了外部函数的数据)



内部函数 引用了外部函数的变量, 内部的函数 就叫 闭包

技术分享
# def func():
#     name=‘egon‘
#     def inner():
#         print(name)
#     return inner
#     # print(inner.__closure__)   # 使用外部参数的个数 (<cell at 0x0000000000120C78: str object at 0x0000000001DCC110>,)  判断闭包
# inner=func()
#
# inner()   # 执行的时候只创建一次 节省空间
# inner()
# func()()  #每次执行都创建一次name
# func()()
技术分享

 

     闭包例子

技术分享
from urllib.request import urlopen

def get_url():
    url=r‘https://i.cnblogs.com/PostDone.aspx?postid=7452088&actiontip=%E4%BF%9D%E5%AD%98%E4%BF%AE%E6%94%B9%E6%88%90%E5%8A%9F‘

    # 可能有好多网页

    def inner():
        re=urlopen(url).read().decode(‘utf-8‘)
        print(re)
    return inner

    # 用闭包可以避免多次打开数据;

get_web_content=get_url()
get_web_content()
技术分享


装饰器 是 闭包(内置函数) 的一种应用
让变量不会容易改变,并且不会每次都会变量创建一次









以上是关于闭包(内部函数用了外部函数的数据)的主要内容,如果未能解决你的问题,请参考以下文章

闭包和装饰器

闭包和装饰器

内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础

JS高级:闭包

闭包函数与装饰器

11函数进阶---闭包