zoukankan      html  css  js  c++  java
  • Python 装饰器

    顾名思义,装饰器其实就是给一个函数加一些修饰功能,为什么不直接改函数源码呢?因为对于某些复杂的函数你没有耐性去阅读了,所以python提供了装饰器这个功能


    ## 闭包

    闭包是指定义在一个函数内的函数,且调用了外部变量或对象,但不能是全局变量。

    def outer():
        a = 1
        def inner():
            b = 2
            return a + b
        return inner
    
    func = outer()
    func()
    

    装饰器本身也是一个函数,返回一个函数对象指针。

    def decorator(func):
        def wrapper(*args, **kwargs):
            start = time.time()
            func()
            end = time.time()
            print(end - start)
        return wrapper
    
    @decorator
    def func():
        time.sleep(1)
    
    func()
    

    @语句实质上等于func = decorator(func)


    ## 装饰链
    def makediv(func):
        return lambda: '<div>' + func() + '</div>'
    
    def makep(func):
        return lambda: '<p>' + func() + '</p>'
    
    @makediv
    @makep
    def func():
        return "Hello world."
    
    func()  #  输出"<div><p>Hello world.</p></div>"
    

    可见程序是从上往下依次执行的,func函数先被内层装饰器修饰

  • 相关阅读:
    各进制转换
    免root xshell连接termux
    sqlmap怎么拿shell
    SSRF漏洞
    国外安全网站、社区论坛、博客、公司、在线工具等整合收集
    渗透测试常用工具问题总结
    cdn绕过
    xss注入
    永恒之蓝(msf17010)kali复现
    文件上传漏洞和绕过
  • 原文地址:https://www.cnblogs.com/authetic/p/9881393.html
Copyright © 2011-2022 走看看