• 闭包和装饰器


    gloab和nonlocal

    glob:在局部作用域中使用全局变量
    nonlocal:主要用于函数嵌套时,使用外层函数的变量

    闭包

    函数内部定义的函数称为内部函数,该内部函数包含对外部(上层)作用域,而不是对全局作用域名字的,那么该内部函数称为闭包函数

    闭包函数的基本形式

    def func1():
        name='hello world'
        def func2():
            print(name)
        return func2
    

    装饰器

    程序源代码的原则:对功能扩展开放,对修改源代码封闭
    即可以在源代码的基础上扩展功能,而不能修改源代码(原因是,系统上线了修改源代码,改错了咋整)
    装饰器就是用来进行源代码功能能扩展的一种实现方式。
    装饰器本质上是任意可调用的对象,目前能够理解的就是是函数,而被装饰的对象也可以是任意可调用的对象。
    装饰器功能:是在不修改被装饰对象源代码以及被装饰对象的调用方式的前提下,为其添加新功能
    装饰器原则:不修改源代码,不修改调用方式,还要能够增加新功能

    装饰器基本形式

    #装饰器定义
    def deco(func):
        def wrapper(*args,kwargs):
            pass
            res=func()
            return res
        return wrapper
        
    #使用装饰器
    @deco
    def func1():
        pass
    

    保留原函数帮助文档

    使用wraps

    from functools import wraps
    def deco(func):
        @wraps(func)
        def wrapper(*args,**kwargs):
            pass
            res=func()
            return res
        return wrapper
    

    有参装饰器

    #装饰器定义
    def deco2(pattern):
        def deco(func):
            def wrapper(*args,kwargs):
                pass
                res=func()
                return res
            return wrapper
        return deco
        
    #使用装饰器
    @deco(pattern)
    def func1():
        pass
    
  • 相关阅读:
    map
    构造函数和对象
    for...in...and for each...in...
    事件
    JSON
    css伪类
    正则表达式
    什么是DOM、什么是BOM
    CSS颜色
    grid-layout实验
  • 原文地址:https://www.cnblogs.com/chenrenjian/p/7050290.html
Copyright © 2020-2023  润新知