zoukankan      html  css  js  c++  java
  • Python

    1 import time
    2 def foo():
    3     time.sleep(1)
    4     print("foo.....")

     假设,这是一个在生产中正在使用的函数

    公司老板让小明来实现一个功能,要求是给这个函数加上时间统计功能

    小明马上就想到了解决的方法,并付诸行动。

    小明的解决方案

    小明想,这还不简单?马上给出了下面的代码

    1 def foo():
    2     start_time = time.time()
    3     time.sleep(1)
    4     print("foo.....")
    5     end_time = time.time()
    6     print("time:{}".format(end_time-start_time))

    当小明修改完,问题出现了,很多部门都会使用这个函数,小明的修改导致了很多部门出现了问题

    或者,小明的代码出现了bug,导致了整个公司的瘫痪

    小明被开除

    他的同事小刚被任命做小明没做完的事情

    小刚的解决方案

     小刚想,既然不能修改原函数,那也好办,我再建一个新的函数调用原函数不就完了?

    1 def count_time(x):
    2     start_time = time.time()
    3     x()
    4     end_time = time.time()
    5     print("time:{}".format(end_time - start_time))
    6 
    7 
    8 count_time(foo)

    功能是实现了,但是整个公司调用foo函数的人都要跟着要把调用方式改了

    小刚被群情激奋的公司员工一顿胖揍

    老板也对小刚的方案不满意,小刚被扣5000块工资

    小芳被任命接替这份工作

    小芳的解决方案

     1 def count_time1(x):
     2     def inner():
     3         start_time = time.time()
     4         x()
     5         end_time = time.time()
     6         print("time:{}".format(end_time - start_time))
     7     return inner
     8 
     9 
    10 foo = count_time1(foo)
    11 foo()

    小芳成功完成任务,老板感觉还可以,奖励了小芳2000元

    但是老板认为这个代码还有改进的空间,便让小芳进行改进

    python中的装饰器

     1 import time
     2 def count_time(x):
     3     def inner():
     4         start_time = time.time()
     5         x()
     6         end_time = time.time()
     7         print("time:{}".format(end_time - start_time))
     8     return inner
     9 
    10 
    11 @count_time
    12 def foo():
    13     time.sleep(1)
    14     print("foo.....")
    15 
    16 
    17 foo()

    文章中如果有什么错误,请评论指正,谢谢!

  • 相关阅读:
    移动平台的meta标签-----神奇的功效
    JAVA工程命名规范
    linux 查看tomcat 实时日志
    linux 配置全局jdk环境
    AJAX 前后端交互 验证信息是否正确
    数据库更新DATE类型的时间
    jq 克隆 移除table
    eclipse 安装javaEE插件 和htmlxmljsp编辑器
    oracle 正序 逆序 排序查询
    JQ遍历 input 并修改name属性
  • 原文地址:https://www.cnblogs.com/changjiangwei/p/11368441.html
Copyright © 2011-2022 走看看