• 函数3


    一、闭包函数

    1. 闭包:内部函数对外部函数作用域而非全局作用域的引用

    2. 两种为函数传参的方式

      • 使用参数

    def func(x):
        print(x)
            
    func(1)

     

      • 包给函数
    def outter(x):
        x = 1
        def inner(x):
            print(x)
        return inner
                
    f = outter(1)
    f()    

     

    二、装饰器

    1. 开放封闭原则

      • 对扩展开放

      • 对修改封闭

    2. 装饰器的特点:

      • 装饰器本身是可以任意调用的对象

      • 被装饰对象也可以是任意可调用的对象

    3. 装饰器的两大原则:

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

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

    4. 装饰器语法糖

        在被装饰函数正上方,并且是单独一行写上@装饰器名

    1. 两层装饰器模板

    def deco(funco):
        def wrapper(*args, **kwargs):
            res = func(*args, **args)
            return res
        return wrapper
        
    @deco
    def index():
        pass    
     from functools import wraps
    def deco(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            res = func(*args, **kwargs)
            return res
        return wrapper
            
    @deco
    def index():
        pass
            
    print(index.__doc__)
    print(index.__name__)        

     

    1. 带参数的装饰器

    def outer(flag):
        def innre(func):
            def func(*args, **kwargs):
                if flag:
                    print('执行函数前要做的')
                res = func(*args, **args)
                if flag:
                    print('执行函数之后要做的')
                return res
            return func
        return inner
    
    @outer(False)
    def index():
        pass
        
    index()
  • 相关阅读:
    [导入]Interesting Finds: 2007.12.17
    [导入]Interesting Finds: 2007.12.15
    [导入]Interesting Finds: 2007.12.13
    Interesting Finds: 2007.12.22
    吾生也有涯,而知也无涯。
    Hello world
    学习了clipboard复制剪切插件的使用
    在博客园学习成长
    命名空间概述
    Linux vi/vim
  • 原文地址:https://www.cnblogs.com/binyuanxiang/p/11574670.html
Copyright © 2020-2023  润新知