zoukankan      html  css  js  c++  java
  • 小练习2

    1#测试函数执行时间的装饰器示例
    import time
    def timing_func(fn):
        def wrapper():
            start=time.time()
            fn()   #执行传入的fn参数
            stop=time.time()
            return (stop-start)
        return wrapper
    @timing_func
    def test_list_append():
        lst=[]
        for i in range(0,100000):
            lst.append(i)  
    @timing_func
    def test_list_compre():
        [i for i in range(0,100000)]  #列表生成式
    a=test_list_append()
    c=test_list_compre()
    print("test list append time:",a)
    print("test list comprehension time:",c)
    print("append/compre:",round(a/c,3))
    
    test list append time: 0.0219423770904541
    test list comprehension time: 0.007980823516845703
    append/compre: 2.749

    2.统计异常出现次数和时间的装饰器
    写一个装饰器,统计某个异常重复出现指定次数时,经历的时长。
    import time
    import math
    
    
    def excepter(f):
        i = 0
        t1 = time.time()
        def wrapper(): 
            try:
                f()
            except Exception as e:
                nonlocal i
                i += 1
                print(f'{e.args[0]}: {i}')
                t2 = time.time()
                if i == n:
                    print(f'spending time:{round(t2-t1,2)}')
        return wrapper

    3.定制递减迭代器
    #编写一个迭代器,通过循环语句,实现对某个正整数的依次递减1,直到0.
    class Descend(Iterator):
        def __init__(self,N):
            self.N=N
            self.a=0
        def __iter__(self):
            return self 
        def __next__(self):
            while self.a<self.N:
                self.N-=1
                return self.N
            raise StopIteration
        
    descend_iter=Descend(10)
    print(list(descend_iter))
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
  • 相关阅读:
    禁止logback输出状态信息
    Idea导出可运行Jar包
    K均值算法
    [转]香农信息论与毒药称球问题
    ajax跨域请求
    Python函数的静态变量
    学倦乱语
    [转]被当做狗和鸡来驱赶的百姓
    numpy文件读写的三对函数
    认真把事办砸是一种能力
  • 原文地址:https://www.cnblogs.com/miaoweiye/p/12613679.html
Copyright © 2011-2022 走看看