# 使用装饰器对有返回值的函数进行装饰
# def func(functionName):
  # print('---func-1----')
  # def func_in():
    # print("----func_in---1-")
    # x = functionName() #保存返回来的hahah
    # print("----func_in---2-")
    # return x
  # print('---func-2----')
  # return func_in

# @func
# def test():
  # print("-----test-----")
# return "haha"

# ret = test()
# print("test return value is %s"%ret)

# ---func-1----
# ---func-2----
# ----func_in---1-
# -----test-----
# ----func_in---2-
# test return value is haha

# 使用通用装饰器对函数进行装饰
# def func(functionName):
  # def func_in(*args,**kwatgs):
    # print("记录日志")
    # x = functionName(*args,**kwatgs)
    # return x
  # return func_in

# @func
# def test():
  # print("-----test-----")
# return "haha"

# ret = test()
  # print("test return value is %s"%ret)
# # -----test-----
# # test return value is haha

# @func
# def test2():
  # print("----test2----")

# a = test2()
  # print(a)
# # ----test2----
# # None

# @func
# def test3(a):
  # print("-----test3----a=%d"%a)

# test3(10)
# -----test3----a=10

# 记录日志
# -----test-----
# test return value is haha

# 记录日志
# ----test2----
# None

# 记录日志
# -----test3----a=10

# 带有参数的装饰器、、
def func_arg(arg):
  print(arg)
  def func(functionName):
    print('----func----')
    def func_in():
      print("--记录日志---")
      print(arg)
      if arg=='呵呵':
        functionName()
        functionName()
      else:
        functionName()
    return func_in
  return func

# 1.先执行func_arg('呵呵')函数,这个函数return的结果是func这个函数的引用
# 2.@func
# 3.使用@func对test进行装饰

# 带有参数的装饰器,能够起到在运行时,有不同的功能
@func_arg('呵呵')
def test():
  print("-----test-----")

ret = test()
# 呵呵
# ----func----
# --记录日志---
# -----test-----

@func_arg("haha")
  def test2():
print("--test2--")

test2()

# haha
# ----func----
# --记录日志---
# haha
# --test2--

python 通用装饰器,带有参数的装饰器,的更多相关文章

  1. python之带有参数的装饰器

    一个小demo def set_level(level_num): def set_func(func): def call_func(*args, **kwargs): if level_num = ...

  2. python 装饰器 第七步:带有参数的装饰器

    #第七步:带有参数的装饰器 #两个基本函数用同一个装饰器装饰 def outer(arg): print(arg) #这是装饰器的代码 def kuozhan(func): print(func) # ...

  3. python 装饰器 第五步(1):带有参数的装饰器

    #第五步:带有参数的装饰器 #用于扩展基本函数的函数 def kuozhan(func): #内部函数(扩展之后的eat函数) #5由于调用的时候传了两个参数,未来的eat函数没有参数接收 #5报错的 ...

  4. Python 带有参数的装饰器

    def wrapper_out(flag): # 装饰器本身的参数 def wrapper(fn): # 目标函数 def inner(*args, **kwargs): # 目标函数执行需要的参数 ...

  5. [python] 带有参数并且传递参数的装饰器

    场景时这样的,我有个一大堆任务,我要给这些任务计时,入库.就需要一个带有参数的装饰器来记录任务名称, 在任务执行前和执行之后都需要记录任务当时执行的时刻. #-*- encoding=utf-8 -* ...

  6. Python带参数的装饰器

    在装饰器函数里传入参数 # -*- coding: utf-8 -*- # 2017/12/2 21:38 # 这不是什么黑魔法,你只需要让包装器传递参数: def a_decorator_passi ...

  7. Python 基础之面向对象之八步理解装饰器

    装饰器:在不改变原有代码的情况下,为该原函数扩展新功能特征:返回新函数,替换旧函数语法:@ 语法糖 1.装饰器原型 #例1: def kuozhan(func):    def newfunc():  ...

  8. python基础之迭代器、生成器、装饰器

    一.列表生成式 a = [0,1,2,3,4,5,6,7,8,9] b = [] for i in a: b.append(i+1) print(b) a = b print(a) --------- ...

  9. Python 带参数的装饰器 [2] 函数参数类型检查

    在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里.我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参数有改动,这部分也需要改动.下面我们 ...

随机推荐

  1. MySql常见命令、函数

    ⒈常见命令 命令 说明 show databases; 显示数据库列表 use DataBaseName; 打开指定的数据库 show tables; 显示当前打开数据库的表列表 show table ...

  2. VDB R&D

    VDB Data value visualize: 结论从houdini得知. API常用文字: interior:内部 Narrow-band:窄带 background:窄带外 SDF: XY p ...

  3. 707. Design Linked List

    1. 原始题目 Design your implementation of the linked list. You can choose to use the singly linked list ...

  4. Shell-匹配FTP文件名

    想弄个脚本,下载每日构建的版本,由于版本文件名中有构建时间(不是固定值),只能按日期确认文件名,例如:project_name_2019-01-04*.exe 搜索了下,可以用dir filename ...

  5. 高手进阶,终极内存技术指南——完整/进阶版 II (转)【转】

    转自:https://blog.csdn.net/lightseed/article/details/4630170 SDRAM芯片的预充电与刷新操作 预充电 由于SDRAM的寻址具体独占性,所以在进 ...

  6. Delphi 实现自动更新

    Delphi 通用程序自动更新升级:http://www.delphitop.com/html/wangluo/2968.html https://www.cnblogs.com/hnxxcxg/p/ ...

  7. RF运行脚本报错:WebDriverException: Message: unknown error: call function result missing

    原因:浏览器驱动与浏览器版本不对应

  8. OpenStack实践系列⑧可视化服务Horizon之Dashboard演示

    OpenStack实践系列⑧可视化服务Horizon之Dashboard演示 七.可视化服务Horizon之Dashboard演示 仪表板依赖于功能核心服务,包括身份,图像服务,计算和网络两种(neu ...

  9. Find Lines

    (Uva 6955可以直接随机,湖大OJ 13348 要优化) 题意:给出 n个点的坐标, 一个 百分数p, 求是否有一条直线上有 n * p /100个点… 随机化算法,但也要优化下……(TLE, ...

  10. mybatis xml中不能直接用大于号、小于号要用转义字符

    2.使用 <![CDATA[ ]]>标记