• 装饰器升级版


    # _*_ coding: utf-8 _*_

    # 如何取得home的返回值0000

    import time
    # 调用在python解释器中内置的time函数

    # 原函数 不能改变
    def original():
    print('Original function')
    time.sleep(1)


    # 原函数 不能改变
    def home(name):
    print('Welcome %s to home page' % name)
    time.sleep(1)
    return 8888
    # 返回单个值 就是值本身
    # print(home('oOC'))


    def external(original_func):
    # original_func = (old)home函数的内存地址
    def alter(*args, **kwargs):
    # *args, **kwargs 为了接收输入的任何类型的值
    start = time.time()
    res = original_func(*args, **kwargs)
    # original_func = (old)home(*args, **kwargs)
    # home有返回值是8888(返回单个值 就是值本身)
    # res = 函数运行的结果和返回值
    stop = time.time()

    print('Run time is %s' % (stop - start))
    return res
    # 返回 res的内存地址绑定了的值
    # res = original_func = (old)home(*args, **kwargs)
    # 可以理解为返回了 res的值

    return alter
    # 返回alter函数的内存地址
    # 返回整个alter 整个函数给了external
    # 返回alter 之后相当于把 external()和alter()单独取出来运行结果一样


    # original()
    # 输出Original function
    original= external(original)
    original()
    home = external(home)
    # external(original_func)-----> original_func = home函数的内存地址
    # (new)home = (original_func = (old)home函数的内存地址)
    res = home('oOC')
    # res = (new)home('oOC')= external(original_func = (old)home函数的内存地址)
    print(res)
  • 相关阅读:
    Spring 整合Mybatis
    Spring 配置说明
    AutoCAD.Net/C#.Net QQ群:193522571 虚拟方法的使用
    VLAN帧格式详解
    内网安全体系建设工作思路
    IT公司常见的内网漏洞表格
    内网安全运营的逻辑体系架构
    域安全的基础知识
    利用DNS日志进行MySQL盲注
    Linux内存凭据提取mimipenguin
  • 原文地址:https://www.cnblogs.com/OutOfControl/p/9714823.html
Copyright © 2020-2023  润新知