page contents

被装饰的函数有参数

被装饰的函数有参数

def exam(fn):

    def inner(a, b):

        print('inner函数中的值:%s, %s' % (a, b))  #1)装饰器为闭包,加@,装饰器内从上往下执行

        fn(a, b)   #2)第二执行,引发真正业务函数调用

    return inner   #3)可理解为闭包构成,不用看


@exam

def test(a, b):

    print('结果是:', (a + b))


test(1, 2)      # 与@语法糖及函数定义test()联系起来,test(1,2)调用实际相当于

                # 2)t = exam(test)  将业务函数的函数名test作为参数传入到exam()中

                # 3)t(1,2) 再传实参调用;合起来为 exam(test)(1,2)    实参传入第二层

               

test(3, 4) 

运行结果:

inner函数中的值:1, 2

结果是: 3

inner函数中的值:3, 4

结果是: 7

  • 发表于 2021-08-18 17:26
  • 阅读 ( 387 )
  • 分类:Python开发

相关问题

0 条评论

请先 登录 后评论
Wilia
Wilia

28 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章