python基础 带参数以及返回值的函数装饰器

 1 #带参数以及返回值的函数装饰器,上一篇博客记录了无参数函数装饰器写法以及使用方案,当函数有参数以及返回值时需要将装饰器进行如下修稿
 2 def timer(fun):
 3     def deco(*args,**kwargs): #被装饰函数实际是执行deco,所以在此将被装饰函数参数进行传递
 4         start_time = time.time()
 5         res = fun(*args,**kwargs) #将被装饰函数的返回值接收
 6         stop_time = time.time()
 7         return res #返回被装饰函数的返回值
 8     return deco
 9
10 @timer #被装饰函数带参数以及有显式返回值
11 def add(x, y):
12     time.sleep(1)
13     print("this is add func")
14     return x+y
15
16 print(add(1, 2))

原文地址:https://www.cnblogs.com/flags-blog/p/11925061.html

时间: 2024-12-17 05:17:50

python基础 带参数以及返回值的函数装饰器的相关文章

python基础6—(高阶,匿名,偏)函数 | 装饰器

这里比较的高级了, 学到这里感觉有点意思,但是也看到了和其他语言相通点 高阶函数 可以把别的函数作为参数传入的函数叫高阶函数 def add(x, y, f): return f(x) + f(y) add(-5, 6, abs) # 11 # 匿名函数 python使用lambda来创建匿名函数 sum = lambda arg1, arg2 : arg1 + arg2 sum(10, 20) # 30 # reduce 内建函数是个二元操作函数, 用来将一个数据集合所有数据进行二元操作 #

Java基础---Java中带参数无返回值方法的使用(三十九)

Java 中带参无返回值方法的使用 有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行.例如,现实生活中电饭锅可以实现"煮饭"的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真是的"巧妇难为无米之炊"了.我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据. 我们先来看一个带参数,但没有返回值的方法: 上面的代码定义了一个 show 方法,带有一个参数 name

Python基础-----带参数验证功能的装饰器

#带参数,可以根据不同的认证类型进行认证 user_list = [ {'name':'a','password':'123'}, {'name':'b','password':'123'}, {'name':'c','password':'123'}, {'name':'d','password':'123'}] #所有用户信息列表(值为字符串类型) current_user = {'username':None,'login':False} #记录用户当前登录状态 def auth(auth

C#多线程运行带参数与返回值函数

用ParameterizedTheradStart委托 带参数的ParameterizedThreadStart委托 public delegate void ParameterizedThreadStart(Object obj) 可以将要传送给线程函数的信息封装为一个对象,然后调用Thread类的以下构造函数: public Thread(ParameterizedThreadStart start) 启动线程时,向其传送一个参数信息对象即可 Thread t  = new Thread(n

Python基础篇【第九篇】:剖析装饰器

装饰器:装饰器:装饰器的语法以@开头,然后是装饰器函数的名字和可选的参数,紧跟着装饰器声明的是被修饰的函数和装饰函数的可选参数.剖析装饰器: #!/usr/bin/env python3 ''' 装饰器:装饰器的语法以@开头,然后是装饰器函数的名字和可选的参数,紧跟着装饰器声明的是被修饰的函数和装饰函数的可选参数. 表现形式: def outer(): def inner(): print("xxx") return test return inner @outer def f1():

在IDEA中设置方法自动注释(带参数和返回值)

第一部分 设置 打开设置面板 新建 在线模板 新建自动添加规则,注意 这里触发的字符 不能随便写 必须为 * Template text 区域 看上去有点乱,但是是为了显示时的对齐,该区域的内容如下(空格之类的不要乱动): * * $VAR1$ $params$ * @return $returns$ * @author Chendezhou * @date $date$ $time$ */ 编辑变量的内容 其中 VAR1 的内容如下 groovyScript("def result=''; d

Swift2.0语言教程之函数的返回值与函数类型

Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有一个返回值的函数 开发者希望在函数中返回某一数据类型的值,必须要在函数声明定义时为函数设定一个返回的数据类型,并使用return语句进行返回.其中,return语句的一般表示形式如下: return 表达式 其中,表达式可以是符合Swift标准的任意表达式.而具有返回值的函数声明定义形式如下: fu

javascript函数参数、返回值类型检查

实现带参数.返回值类型声明的js函数: 类型定义:window.Str = Type.Str = Type.define('STRING', Type.isStr);var Per = Type.define('PERSON', function(p){    return p && p.type === 'person' && p.name;}); 定义函数:var addStr = Str(function(a, b){  return a + b;}, Str, St

Python学习之路day4-函数高级特性、装饰器

一.预备知识 学习装饰器需理解以下预备知识: 函数即变量 函数本质上也是一种变量,函数名即变量名,函数体就变量对应的值:函数体可以作为值赋给其他变量(函数),也可以通过函数名来直接调用函数.调用符号即(). 嵌套函数 函数内部可以嵌套定义一层或多层函数,被嵌套的内部函数可以在外层函数体内部调用,也可以作为返回值直接返回 闭包 在一个嵌套函数中,内部被嵌套的函数可以调用外部函数非全局变量并且不受外部函数声明周期的影响(即可以把外部函数非全局变量视为全局变量直接调用). 高阶函数 把一个函数作为参数