关于python的装饰器简单实用

python调用函数可以提供 key=value 代表这个参数的值,我们可以不用根据函数定义顺序来调用函数。。。。
(*a,**b)  可以作为装饰器提供不定参数。。。使装饰器和被装饰函数 耦合度大幅度降低


函数 def func():
                return 1
///返回 函数的名字  
func.__name__ 

//////通过装饰器实现类的静态方法
class Class:
    @staticmethod
    def OK():
        print "OK"
Class.OK()
/////不定参数装饰器  
#encoding=utf-8
def deco(func):
    def _infunc(*args,**kvargs):
        print("before myfunc() called.")
        func(*args,**kvargs)
        print("after myfunc() called.")
    return _infunc
@deco
def MyFunc(a,b):
    print "a+b=",a+b
@deco
def MyFunc1(a,b,c):
    print "a+b+c=",a+b+c
MyFunc(1,2)
MyFunc1(b=1,a=100,c=8)
////装饰器带参数的 不定参数装饰器
#encoding=utf-8
def decco(arg):
    def _deco(func):
        def _infunc(*args,**kvargs):
            print("before myfunc() called. args:%s" % arg)
            func(*args,**kvargs)
            print("after myfunc() called.args:%s" % arg)
        return _infunc
    return _deco
@decco("aaa")
def MyFunc(a,b):
    print "a+b=",a+b
@decco("bbb")
def MyFunc1(a,b,c):
    print "a+b+c=",a+b+c
 
MyFunc(1,2)
MyFunc1(b=1,a=100,c=8)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。