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

    ''' 闭包函数: 1. 函数内部定义的函数 2. 对外部作用域而非全局作用域的引用 !  '''
    def x():
      r = 1
      def y():
        print("Test text:{test}".format(test=r))
        print("yys")
      return y

    ''' 闭包作用: 1. 自带作用域 2. 延迟计算 '''
    from usrlib.urlrequest import urlopen

    def urlread(url):
      def get():
        reutrn urlopen(url).read()
      return get
    source_html = urlread("https://i.cnblogs.com/EditPosts.aspx?opt=1") # 返回的是get函数地址
    print(source_html()) # 执行get函数


    ''' 装饰器实现:闭包外部函数传入被装饰函数名 '''
    ''' 多个装饰器装饰一个函数,执行顺序是从下往上 '''
    from
    decorator import decorator
    import time
    def logging(x):
      @decorator
    def log(func, *args, **kwargs):   start_time = time.time()   func(*args, **kwargs)
        end_time = time.time()
        print("func 运行时间:{time}".format(time = end_time - start_time))
      return log @logging("888") def yy(t): print("Context: hello {}!".format(t)) yy("66")

    ''' 类装饰器 :返回类的__call__方法 '''
    class tt(object):
      def __init__(self, func):
        self._func = func

      def __call__(self):
        self._func()
    @tt # mm = tt(mm)
    def mm():
      print('ss')

    class aa(object):

      def __init__(self):
        pass

      def __call__(self, func):
        def _call(*args, **kwargs):
          func(*args, **kwargs)
        return _call

    @aa() # nn = aa()(nn)
    def nn():
      print('rr')
  • 相关阅读:
    Excel 之查找与替换
    重拾Excel之为什么
    taobao
    祝我生日快乐
    啊哈哈哈哈!自由啦
    我是不是得了抑郁症?
    Be quiet
    tcpdump tutorial
    Java Thread 多线程同步、锁、通信
    java 堆、栈、常量池等
  • 原文地址:https://www.cnblogs.com/moonypog/p/11052400.html
Copyright © 2011-2022 走看看