装饰器,装饰器多参数的使用(*arg, **kwargs),装饰器的调用顺序
一、#1.执行outer函数,并且将其下面的函数名,当作参数
#2、将outer的返回值重新赋值给f1 = outer的返回值
#3.新f1 = inner
#4.func = 原f1
#!/usr/bin/env python
def outer(func) :
def inner() :
print("hello")
print("hello")
print("hello")
r = func()
print("end")
print("end")
print("end")
return r
return inner
@outer
def f1() :
print("F1")
#1.执行outer函数,并且将其下面的函数名,当作参数
#2、将outer的返回值重新赋值给f1 = outer的返回值
#3.新f1 = inner
f1()
二、装饰器多参数的使用(*arg, **kwargs)
#!/usr/bin/env python
def oute(func) :
""" :param func:
:return:
"""
def inner(*arg, **kwargs) :
print("abvc")
r = func(*arg, **kwargs)
print("")
return r
return inner
@oute
def outer(func) :
def inner(*arg, **kwargs) :
print("")
r = func(*arg, **kwargs)
print("")
return r
return inner
# @oute
@outer def f1(a1, a2) :
print("")
def f2(a1, a2) :
print("dfas")
f1(1,2)
结果为:
abvc
456
123
321
789
#!/usr/bin/env python
def oute(func) :
""" :param func:
:return:
"""
def inner(*arg, **kwargs) :
print("abvc")
r = func(*arg, **kwargs)
print("")
return r
return inner
# @oute
def outer(func) :
def inner(*arg, **kwargs) :
print("")
r = func(*arg, **kwargs)
print("")
return r
return inner
@oute
@outer def f1(a1, a2) :
print("")
def f2(a1, a2) :
print("dfas")
f1(1,2)
结果为:
abvc
123
321
789
456
装饰器,装饰器多参数的使用(*arg, **kwargs),装饰器的调用顺序的更多相关文章
- 【python 】装饰器 (多个参数的函数,带参数的装饰器)【转】
最简单的模板是这样的 #-*-coding:utf-8-*- def outer(func): def inner(): print 'before' func() print 'after' # r ...
- 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况
装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则: ...
- Python装饰器AOP 不定长参数 鸭子类型 重载(三)
1 可变长参数与关键字参数 *args代表任意长度可变参数 **kwargs代表关键字参数 用*args和**kwargs只是为了方便并没有强制使用它们. 缺省参数即是调用该函数时,缺省参数的值若未被 ...
- python 装饰器 (多个参数的函数,带参数的装饰器)
最简单的模板是这样的 #-*-coding:utf-8-*- def outer(func): def inner(): print 'before' func() print 'after' # r ...
- Python 4 函数的参数,内置函数,装饰器,生成器,迭代器,
一.函数的参数: 1.位置参数:调用函数时根据函数定义的参数位置来传递参数. 2.关键字参数:用于函数调用,通过“键-值”形式加以指定.可以让函数更加清晰.容易使用,同时也清除了参数的顺序需求. 3. ...
- python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)
转载:http://python.jobbole.com/81683/ 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需 ...
- ts装饰器的用法,基于express创建Controller等装饰器
TS TypeScript 是一种由微软开发的自由和开源的编程语言.它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类 型和基于类的面向对象编程. TypeScript 扩 ...
- python 多个装饰器的调用顺序
python 多个装饰器的调用顺序 一般情况下,在函数中可以使用一个装饰器,但是有时也会有两个或两个以上的装饰器.多个装饰器装饰的顺序是从里到外(就近原则),而调用的顺序是从外到里(就远原则). 原代 ...
- python函数:装饰器、修正、语法糖、有参装饰器、global与nonlocal
一.装饰器 二.装饰器修正1 三.装饰器修正2 四.装饰器的语法糖 五.有参.无参装饰器 六.global与nonlocal 一.装饰器 ''' 1 什么是装饰器 器=>工具 装饰=>指的 ...
随机推荐
- jsp:jstl标签forTokens
forTokens 标签这个标签的作用和 Java 中的 StringTokenizer 类的作用非常相似,它通过 items 属性来指定一个特定的字符串,然后通过 delims 属性指定一种分隔符( ...
- Gridview中Datakeys 通过主键取得各列的值。
首先在初始化Gridview时候定义主键的数组. GridViewTeacherStudent.DataKeyNames=new string[] {"courseId",&quo ...
- The tag handler class for "c:set"(org.apache.taglibs.standard.tag.rt.core.UrlTag)was not found on the Java Build Path
1.源码: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> < ...
- 算法练习3---水仙花数java版
所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身. java程序代码如下: public class ArithTest { public static void ...
- jquery获取上传进度和取消上传操作
var xhrOnProgress=function(fun) { xhrOnProgress.onprogress = fun; //绑定监听 //使用闭包实现监听绑 return function ...
- BitmapUtil(高效压缩不失真)
package com.changim.patient.app.utils; import android.app.Activity; import android.content.ContentRe ...
- SDK中常用的工具
Android SDK包含了各种各样的定制工具,简介如下: 一.Android模拟器(Android Emulator )它是在你的计算机上运行的一个虚拟移动设备.你可以使用模拟器来在一个实际的And ...
- brew安装php和扩展
brew install homebrew/php/php56 --with-apache 报错: checking if the location of ZLIB install directory ...
- HDU - 5412 CRB and Queries (整体二分)
题目链接 动态区间第k小,但是这道题的话用主席树+树状数组套线段树的空间复杂度是O(nlog2n)会爆掉. 另一种替代的方法是用树状数组套平衡树,空间复杂度降到了O(nlogn),但我感觉平衡树是个挺 ...
- B+树和LSM存储引擎代表树和B-树
B+树和LSM比较 https://blog.csdn.net/u013928917/article/details/75912045 在关系型数据库mysql中普遍使用B+树作为索引,在实际中 ...