day012

闭包函数

什么是闭包函数

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

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

闭包函数使用

import requests


def outter(url):
    def get():
        response = requests.get(url)
        print(f"done: {url}")
    return get

baidu=outter('https://www.baidu.com')
python = outter('https://www.python.org')

baidu()
baidu()

python()
python()   

装饰器

定义

器指的是工具,而程序中的函数就是具备某一功能的工具,所以装饰器指的是为被装饰器对象添加额外功能。因此定义装饰器就是定义一个函数,只不过该函数的功能是用来为其他函数添加额外的功能。

原则

  1. 不修改被装饰对象的源代码

  2. 不修改被装饰对象的调用方式

    二层装饰器模板

    def outter(func):
        def innter(*args,**kwargs):
            # 代码块  需要实现的功能
            res = func(*args,**kwargs)
            return res
        return innter
    

    三层装饰器

    三层装饰器就是在二层装饰器外再包一个函数, 为二层装饰器传一个参数

    def sanceng(engine):
        def outter(func):
            def wrapper(*args, **kwargs):  # wrapper是未来要运行的函数
                # 加功能
    
                res = func(*args, **kwargs)  # func是被装饰的函数
                return res
            return wrapper
        return outter
    

    迭代器引入

    可迭代对象:含有__iter__方法的就叫做可迭代对象# 
    迭代器:含有__iter__和__next__方法的就叫做迭代器
    
原文地址:https://www.cnblogs.com/TZ0503/p/11574009.html