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

     

    #装饰函数和方法

    def foo():
        print 'foo'
      
    def foo():
        print 'before do something'
        print 'foo'
        print 'after'
     
    def foo():
        print 'foo'
         
    def wrapper(func):
        print 'before'
        func()
        print 'after'
          
    wrapper(foo)
     
    def foo():
        print 'foo'
         
    def wrapper(func):
        def result():
            print 'before'
            func()
            print 'after'
        return result
    Do = wrapper(foo)
    Do()
         
    def wrapper(func):
        def result():
            print 'before'
            func()
            print 'after'
        return result
     
    @wrapper
    def foo():
        print 'foo'
     
    foo()

    #带参数的装饰器

    #在函数执行前后,执行任意函数

    #!/usr/bin/env python
    #coding:utf-8
     
    def Before(request,kargs):
        print 'before'
         
    def After(request,kargs):
        print 'after'
     
    def Filter(before_func,after_func):
        def outer(main_func):
            def wrapper(request,kargs):
                 
                before_result = before_func(request,kargs)
                if(before_result != None):
                    return before_result;
                 
                main_result = main_func(request,kargs)
                if(main_result != None):
                    return main_result;
                 
                after_result = after_func(request,kargs)
                if(after_result != None):
                    return after_result;
                 
            return wrapper
        return outer
         
    @Filter(Before, After)
    def Index(request,kargs):
        print 'index'
              
    if __name__ == '__main__':
        Index(1,2)

    def outer(fun):
      def wrapper(arg):
        print '验证'
        result = fun(arg)
        print 'ok'
        return result
      return wrapper

    @outer
    def Func1(arg):
      print 'func1',arg
      return 'return'
    #@outer = outer(Func1)

    response = Func1('li')
    print response

    #装饰类

  • 相关阅读:
    jQuery获取当前元素是该父元素的第几个元素&获取父元素的第n个子元素
    获取当前月份的天数
    获取当年的每个月份的天数:
    解决ul下的li换行问题,(父元素div加overflow:scroll没作用的问题)
     获取当年的月份的天数:
    程序员成长道路上必经的几个阶段
    CSS如何让文字垂直居中?
    2015年7个重要的Web设计趋势
    引入css文件时,css link和@import区别
    在html页面引用css文件的方法
  • 原文地址:https://www.cnblogs.com/muzinan110/p/4928204.html
Copyright © 2011-2022 走看看