zoukankan      html  css  js  c++  java
  • 装饰器升级版

    # _*_ 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)
  • 相关阅读:
    Dubbo支持的协议的详解
    db2 SQL6036N解决办法
    9-5 HTTP注解演示及注意事项讲解
    9-4 Feign之HTTP注解介绍
    9-3 Feign演示及Feign注解解析
    9-2 Feign环境准备
    9-1 Feign自我介绍
    8-30 Hystrix章节总结
    8-29 实战技巧:如何设置线程池
    8-28 Hystrix监控讲解与演示
  • 原文地址:https://www.cnblogs.com/OutOfControl/p/9714823.html
Copyright © 2011-2022 走看看