装饰器

# 1.两个参数

def wai(fun):

    def nei(n,y):

        print('检查 传递的参数是 %d =' % n)

        print('==函数调用前的检查==')

        print(n,y) #函数调用 传递实际参数

    return nei

@wai

def foo(a,b):

    print('==foo==')

    print('==foo==参数是 %d' % a)

foo(1,3) 

# 2.不定长参数

def wai(fun):

    def nei(*args,**kwargs):

        print('检查 传递的参数是 ' , % args)

        print('==函数调用前的检查==')

        fun(*args,**kwargs)

    return nei

@wai

def foo(*args,**kwargs):  # *a()  **a{}

    print('==foo==')

    print('==foo==参数是' ,  args)

    print('==foo==参数是' , kwargs)

foo(1,2,3,4,5,6,'a',a=1,b=2,c='a')

# 3.返回值

def wai(fun):

    def nei():

        print('==函数调用前的检查==')

        return('fun())

    return nei 

@wai

def foo():

    return('==foo==')

print(foo()) 

# 4.增加外部 参数传递

def jsq(a):

    def wai(fun) :   

        def nei() : 

            print('函数调用前的检查==') 

            print('判断需要使用参数 这里 接受',a)

              return nei

    return wai 

@jsq(12345) 

def foo():   

    return('==foo==')

foo()             

你可能感兴趣的:(装饰器)