• python之道14


    看代码写结果:

    def wrapper(f):
        def inner(*args,**kwargs):
            print(111)
            ret = f(*args,**kwargs)
            print(222)
            return ret
        return inner
    
    def func():
        print(333)
    
    print(444)
    func()
    print(555)
    

    答案

    444
    333
    555
    

    编写装饰器,在每次执行被装饰函数之前打印一句’每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码’。

    答案

    def warpper(f):
    	def inner(*args,**kwargs):
    		print('每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码')
    		ret = f(*args,**kwargs)
    		return ret
    	return inner
    
    @warpper
    def func():
    	print(111)
    func()
    

    为函数写一个装饰器,把函数的返回值 +100 然后再返回。

    @wrapper
    def func():
        return 7
    
    result = func()
    print(result)
    

    答案

    def warpper(f):
    	def inner(*args,**kwargs):		
    		ret = f(*args,**kwargs)+ 100
    		return ret
    	return inner
    
    @wrapper
    def func():
        return 7
    
    result = func()
    print(result)
    # 106
    

    请实现一个装饰器,通过一次调用使用函数重复执行5次。

    答案

    def wrapper(f):
        def inner(*args,**kwargs):
            for i in range(5):
               f(*args,**kwargs)
        return inner
    
    @wrapper
    def func():
        print(222)
    func()
    
    # 输出结果
    222
    222
    222
    222
    222
    

    请实现一个装饰器,每次调用函数时,将函数名以及调用此函数的时间节点写入文件中。

    可用代码:
    import time
    struct_time = time.localtime()
    print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time)) # 当前时间节点
    
    def wrapper():
        pass
    def func1(f):
        print(f.__name__)
    func1(wrapper)
    函数名通过: 函数名.__name__获取。
    

    答案

    import time
    # struct_time = time.localtime()
    # print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time)) # 当前时间节点
    
    def wrapper(f):
        def inner(*args, **kwargs):
            with open('a.txt',mode='r+',encoding='utf-8') as f1:
                f1.read()
                struct_time = time.localtime()
                ret = f(*args, **kwargs)
    
                f1.write(f"函数名:{f.__name__},当前时间节点:{time.strftime('%Y-%m-%d %H:%M:%S', struct_time)}
    ")
                return ret
        return inner
    @wrapper
    def func1(f):
        print(f.__name__)
    func1(wrapper)
    
    # 输出文件的结果
    函数名:func1,当前时间节点:2019-06-24 19:08:01
    函数名:func1,当前时间节点:2019-06-24 19:08:08
    
  • 相关阅读:
    phone8 inapp purchasing
    Delegate,Action,Func,匿名方法,匿名委托,事件
    get a full screen popup to work on WP8
    as3.0动态文本大全
    actionScript 3 殿堂之路 第四章 学习收获
    java中的switch case
    Silverlight的DataGrid导出文档
    ArcGIS教程大全
    同步异步请求区别
    XML操作,XPath语法
  • 原文地址:https://www.cnblogs.com/zanao/p/11144223.html
Copyright © 2020-2023  润新知