zoukankan      html  css  js  c++  java
  • 装饰器修饰带参数的功能函数

     1 """
     2 带参数的功能函数的装饰
     3 """
     4 import time
     5 def writeLog(func):
     6     print('访问了方法名:',func.__name__,'	时间:',time.asctime())
     7 
     8 #定义一个闭包
     9 def funOut(func):
    10     def funIn(x,y):
    11         writeLog(func)
    12         return func(x,y)
    13     return funIn
    14 
    15 #添加装饰器
    16 @funOut # 相当于执行:f = funOut(sum) 把该功能函数名作为外部函数的变量参数执行
    17 def sum(a,b): 
    18     return a + b
    19 
    20 result = sum(10,20)
    21 print('两数之和:',result)
    22 """
    23 分析:执行过程
    24     @funOut # 相当于执行:f = funOut(sum) 把该功能函数名作为外部函数的变量参数执行,
    25     外部函数执行完返回内部函数的函数名:funIn,指向内部函数,内部函数使用外部函数的变量参数sum,
    26     funIn调用内部函数,执行:writeLog(sum)和sum(10,20),并返回。
    27 """
    28 #功能函数中有三个参数
    29 def funOut2(func):
    30     def funIn(a,b,c):
    31         writeLog(func)
    32         return func(a,b,c)
    33     return funIn
    34 @funOut2
    35 def add(a,b,c):
    36     return a+b+c
    37 result = add(10,20,30)
    38 print('三数之和:',result)
    1 访问了方法名: sum      时间: Sat May 16 21:49:38 2020
    2 两数之和: 30
    3 访问了方法名: add      时间: Sat May 16 21:49:38 2020
    4 三数之和: 60
    正是江南好风景
  • 相关阅读:
    angularjs里对JS的lowercase和uppercase的完善
    UVA
    UVA
    MySQL 8.0X的安装与卸载命令
    回文树(模板+例题)
    UESTC
    UVALive
    BZOJ
    ACM-ICPC 2018 南京赛区网络预赛 I Skr (马拉车+hash去重)或(回文树)
    ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)
  • 原文地址:https://www.cnblogs.com/monsterhy123/p/12902352.html
Copyright © 2011-2022 走看看