Python 装饰器实现样例

来源:互联网 发布:linux时间同步 编辑:程序博客网 时间:2024/06/15 14:57
# coding:utf-8'''装饰器实现闭包的应用装饰器和被装饰函数都有参数时,一:需要三层的嵌套第一层传装饰器参数、第二层嵌套传函数、第三层传被装饰函数的参数二:三层返回最里层返回func(*args)拿到参数,外层返回最里层函数,最外层返回次外层'''def dec(isnot = False):    print 'call dec'    if isnot:        def _dec(func):            print 'in _dec %s', str(func)            def in_dec(*args):                print 'in dec args=',args                if len(args) == 0:                    return 0                for val in args:                    if not isinstance(val, int):                        return 0                return func(*args)            return in_dec    else:        def _dec(func):            print 'in else _dec'            return func    return _dec@dec(False)def my_sum(*args):    print 'in my_sum'    return sum(args)/len(args)print my_sum(1,2,3,4,5,6,7,8,9,10)输出:call decin else _decin my_sum5[Finished in 0.1s]

原创粉丝点击