# 使用装饰器对有返回值的函数进行装饰
# 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. openstack Q版部署-----虚拟机创建(8)

    一 .创建网络环境 环境变量生效一下 创建一个网络: openstack network create --share --external \ --provider-physical-network ...

  2. Scrapy快速上手

    超详细官方教程解析 https://blog.csdn.net/fly_yr/article/details/51540269 实战过程: 创建一个Scrapy项目 定义提取的Item 编写爬取网站的 ...

  3. 海马玩模拟器——搭建React Native环境

    Visual Studio Emulator for Android 模拟器国内这网络环境不太用,所以使用海马玩模拟器,给大家推荐一下! 下面开始配置环境: 1)下载1.8+JDK,配置JDK环境参考 ...

  4. python 十大web框架排名总结

    0 引言 python在web开发方面有着广泛的应用.鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题.为此,我特此对比较常见的几种框架从性能.使用感受以及应用情况进行一个粗略的分析. 1 D ...

  5. python中的正则表达式--re模块

    参考博客:https://www.cnblogs.com/tina-python/p/5508402.html 这里说一下python的re模块即正则表达式模块,先列出其中涉及到的各种字符和模式等: ...

  6. JQuery 拾遗

    jquery基本上依赖百度,不熟悉的jquery操作记录于此: 1.判断元素的显示隐藏:$("#XXX").is(':visible'). 2. jquery取所有属性以什么开头 ...

  7. C++著名程序库的比较和学习经验

    内容目录:1.C++各大有名库的介绍——C++标准库2.C++各大有名库的介绍——准标准库Boost3.C++各大有名库的介绍——GUI4.C++各大有名库的介绍——网络通信5.C++各大有名库的介绍 ...

  8. 在本地SharePoint 2013 搭建App开发环境

    1.环境描述: SharePoint服务器: Windows Server 2012 R2+SharePoint 2013 IP:192.168.1.180,域控:ser.com 开发环境: Wind ...

  9. SIFT+BOW 实现图像检索

    原文地址:https://blog.csdn.net/silence2015/article/details/77374910 本文概述 图像检索是图像研究领域中一个重要的话题,广泛应用于医学,电子商 ...

  10. Unity中的GC以及优化

    [简介] 常见的 Unity GC 知识点总结出来的思维导图 Unity 官方文档,正巧在博客园发现了已经有位大神(zblade)把原文翻译出来了,而且质量很高~,译文地址 在这里.下面我就可耻地把译 ...