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

    装饰器
    给不同的函数增加通用的功能
    闭包:函数对象+函数内部需要使用的外部变量=函数返回的整体
    装饰器可以传入一个函数,返回一个函数对象
    没有括号的叫函数对象
    有括号的叫函数调用
    def prc():
    return sum
    >>> def func1(func): # func 是函数,函数,函数
    ... return func([1,2,3,4]) # sum([1,2,3,4])
    ...
    >>> func1(sum)
    10
    闭包:
    def func():
    x = 100
    def func1():
    print(x)
    return func1 # func1() 如果返回函数调用,会打印x,如果不加括号,返回函数内存地址
    # 装饰器调用例子,(下面这种方式,装饰器要写在最前面)
    import time
    def timer(func):
    def func1():
    time1 = time.time()
    func()
    time2 = time.time()
    print('共使用了%s' % str(time2-time1))
    return func1
     
    @timer
    def a():
    x = 1
    while x<1000000:
    x += 1
     
    @timer
    def b():
    x = 1
    while x<10000000:
    x += 1
    a()
    b()
    a ===>timer(a)
    a()=====>timer(a)()
     
     
     
     
     
     
    >>> for i in range(1,10):
    ... for m in range(1,i+1):
    ... # print(i,'*',m,'=',i*m)
    ... print('{}*{}={} '.format(i,m,i*m),end='')
    ... print()
    ...
    1*1=1
    2*1=2 2*2=4
    3*1=3 3*2=6 3*3=9
    4*1=4 4*2=8 4*3=12 4*4=16
    5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
    6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
    7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
    8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
    9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
     
    >>> for i in range(len(l)):
    ... for k in range(i+1):
    ... if l[i]<l[k]:
    ... l[i],l[k] = l[k],l[i]
    ...
    >>> l
    [2, 3, 5, 6, 7]
     
    for i in range(1,5):
    ... for k in range(1,5):
    ... for m in range(1,5):
    ... if i !=k and i != m and k != m:
    ... print(i,k,m)
     
     

  • 相关阅读:
    206. 反转链表
    JAVA 排序总结
    Codeforces Round #674 (Div. 3)
    【BM模板】
    【 lca 】最近公共祖先
    【 欧拉函数 】GCD
    【 裴蜀定理 】Border
    【调和级数 && 欧拉常数】 Harmonic Number
    【Lucas定理】组合数取模算法
    【 最短路 && 思维 】Escape Plan
  • 原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/12089099.html
Copyright © 2011-2022 走看看