• 装饰器


    def func():
        print("仓鼠")
    def flower(f):
        def inner():
            print("111")
            f()
            print("222")
        return inner
    flower(func)()
    可以理解为   函数名和()是一个组合  当这个组合为func()时函数被启动,当组合缺少一个时候就会不启动函数,
    这时函数名可以传递的特性就体现出来了,我传递函数名,再给函数名赋值比如F=func  F() ,这句话的意思就等于了
    func()这样我们可以运用这个算法做很多事,比如外部函数调入到内部函数里运行.
    装饰器个人理解

     https://q1mi.github.io/PythonBlog/post/advanced_decorator/装饰器进阶

    import time
    # def func():
    #     print('嘻嘻更健康')
    # import time
    # start_time = time.time()
    # time.sleep(0.1)
    # func()
    # end_time = time.time()
    # print('----> 执行效率%s'%(end_time - start_time))
    # def timmer(f):
    #     start_time = time.time()
    #     time.sleep(0.1)
    #     f()
    #     end_time = time.time()
    #     print('----> 执行效率%s'%(end_time - start_time))
    # func()
    # f1 = func  # func
    # func = timmer  # timmer
    # func(f1)
    # def timmer(f):
    #     def inner():
    #         start_time = time.time()
    #         time.sleep(0.1)
    #         f()
    #         end_time = time.time()
    #         print('----> 执行效率%s' % (end_time - start_time))
    #     return inner
    # func = timmer(func)  # inner
    # func() # inner()
    
    #简单的装饰器
    def func():
        print('嘻嘻更健康')
    def timmer(f):
        def inner():
            start_time = time.time()
            time.sleep(0.1)
            f()
            end_time = time.time()
            print('----> 执行效率%s' % (end_time - start_time))
        return inner
    func = timmer(func)  # inner
    func() # inner()
    
    #语法糖 @
    
    
    # def timmer(f):
    #     def inner():
    #         start_time = time.time()
    #         time.sleep(0.1)
    #         f()
    #         end_time = time.time()
    #         print('----> 执行效率%s' % (end_time - start_time))
    #     return inner
    # @timmer  # func = timmer(func)
    # def func():
    #     print('嘻嘻更健康')
    # func() # inner()
    
    # 带参数的装饰器
    # def timmer(f):
    #     def inner(*args,**kwargs):
    #         start_time = time.time()
    #         time.sleep(0.1)
    #         f(*args,**kwargs)
    #         end_time = time.time()
    #         print('----> 执行效率%s' % (end_time - start_time))
    #     return inner
    
    # @timmer  # func = timmer(func)
    # def func(a):
    #     print('%s嘻嘻更健康'%a)
    # @timmer   # func1 = timmer(func1)
    # def func1(a,b):
    #     print('%s和%s嘻嘻更健康' %(a,b))
    # func('萌哥') #
    # func1('萌哥','杀毒软件')
    # def shouye():
    #     pass
    # def riji():
    #     pass
    # def wenzhang():
    #     pass
    
    # 带返回值的装饰器
    # def timmer(f):
    #     def inner(*args,**kwargs):
    #         start_time = time.time()
    #         time.sleep(0.1)
    #         ret = f(*args,**kwargs)  # 222
    #         end_time = time.time()
    #         print('----> 执行效率%s' % (end_time - start_time))
    #         return ret
    #     return inner
    #
    # @timmer  # func = timmer(func)
    # def func(a):
    #     return 222
    # print(func('萌哥'))
    
    #通用装饰器
    def wrapper(func):
        def inner(*args,**kwargs):
            '''执行函数前操作'''
            ret = func(*args,**kwargs)
            '''执行函数后的操作'''
            return ret
        return inner
    
    @wrapper
    def func():
        print(66)
    func()
    装饰器笔记
  • 相关阅读:
    局域网搭建https局域网
    在内部局域网内搭建HTTPs
    在局域网内实现https安全访问
    http网站转换成https网站
    iis6 和iis7s上整个网站重定向
    我们在部署 HTTPS 网站时,该如何选择SSL证书?
    HTML:几个常见的列表标签
    HTML:基本的标签
    iOS: 字体样式
    iOS: 首次使用App时,显示半透明新手指引
  • 原文地址:https://www.cnblogs.com/cangshuchirou/p/8406796.html
Copyright © 2020-2023  润新知