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

      1 '''
      2 所用知识点:
      3 1.作用域 :L>E>G>B
      4 2.高阶函数:
      5     满足两个条件中的一个就行:
      6     1.函数名可以作为参数输入
      7     2.函数名可以作为返回值
      8 3.闭包
      9 
     10 '''
     11 
     12 
     13 '''
     14 闭包
     15 python中的闭包从表现形式上定义为:
     16 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,
     17 那么内部函数就被称为闭包。
     18  '''
     19 # def out1():
     20 #     x = 10
     21 #     def in1():      # 内部函数
     22 #         y = 1
     23 #         print(x)    # 对外部作用域的变量进行引用
     24 #     return in1      # 内部函数in1称之为闭包
     25 # 
     26 # # 调用in1()
     27 # # 方法一
     28 # out1()()
     29 # # 方法二
     30 # p = out1()
     31 # p()
     32 # #
     33 # # in1()     # 局部变量,全局无法调用
     34 # #
     35 # 
     36 '''
     37 闭包 = 函数块(内部函数) + 定义函数时的环境(变量引用)
     38 '''
     39 # 
     40 # import time
     41 # 
     42 # # start = time.time()     # 开始时间
     43 # # time.sleep(1)           # 间歇时间,间歇1s
     44 # # end = time.time()       # 结束时间
     45 # 
     46 # def p1():
     47 # #    print(start)        # 从1970-01-01开始计算秒数
     48 #     st1 = time.time()
     49 #     print('Hello World')
     50 #     time.sleep(5)
     51 #     end1 = time.time()
     52 #     print('花费了 %s 秒'%(end1 - st1))
     53 # p1()
     54 # 
     55 '''
     56 。。。。。。
     57 n多个类似需要计算时间的函数
     58 此时为了方便起见,创建一个专门用于计算时间的函数
     59 '''
     60 # 
     61 # def showtime(x):
     62 #     start2 = time.time()
     63 #     x()
     64 #     end2 = time.time()
     65 #     print('程序花费了 %s 秒' % (end2-start2))
     66 # 
     67 # def test():
     68 #     time.sleep(2)
     69 #     print('Yeah')
     70 # 
     71 # showtime(test)
     72 # 
     73 '''
     74 装饰器:
     75 为之前的函数添加新的功能
     76 '''
     77 # 
     78 # 
     79 # def showt(c):
     80 #     def a():
     81 #         start2 = time.time()
     82 #         c()
     83 #         end2 = time.time()
     84 #         print('程序花费了 %s 秒' % (end2 - start2))
     85 #     return a
     86 # 
     87 # @showt      # 等价于z = showt(test1)
     88 #             # 但要放在函数之前
     89 # def test1():
     90 #     time.sleep(1)
     91 #     print(123)
     92 # test1()
     93 # 
     94 # 
     95 '''
     96 被装饰器修饰的参数
     97 '''
     98 # 
     99 # def fun1(x):
    100 #     def in_fun1(*y,**z):
    101 #         start = time.time()
    102 #         x(*y,**z)
    103 #         end = time.time()
    104 #         print('此程序用了%s秒' % (end-start))
    105 #     return in_fun1
    106 # 
    107 # @fun1
    108 # 
    109 # def fun2(*a,**b):
    110 #     Sum = 0
    111 #     for i in a:
    112 #         Sum += i
    113 #     print(Sum)
    114 #     time.sleep(2)
    115 # fun2(3,5,1)
    116 # 
    117 # 
    118 # # 功能函数加参数
    119 # def loge(s=''):
    120 #     def fun3(q):
    121 #         def infun3(*x,**y):
    122 #             start = time.time()
    123 #             q(*x,**y)
    124 #             end = time.time()
    125 #             print('%s 秒' % (end-start))
    126 #             if  s == 'true':
    127 #                 print('loge !!!')
    128 #         return infun3
    129 #     return fun3
    130 # 
    131 # @loge('true')       # 中间的参数‘true’可以写成其他的,只不过不会出来loge
    132 # def test3():
    133 #     print('test3')
    134 #     time.sleep(1)
    135 # test3()
  • 相关阅读:
    创建windows服务
    Scrum演练(2)
    数据结构链表创建与输出
    C++ XML解析之tinyXML
    解决VS2010启动速度死慢的问题
    标准C++中string类的用法总结
    模版参数编译时检查方法,利用typedef
    static的作用
    数据结构实现链表的反转
    字节对齐
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/7676260.html
Copyright © 2011-2022 走看看