装饰器,装饰器多参数的使用(*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 什么是装饰器 器=>工具 装饰=>指的 ...
随机推荐
- VS2013打包安装(InstallShield Limited Edition for Visual Studio 2013 )
(1)百度文库安装步骤: http://wenku.baidu.com/link?url=B7NIE3gmoVx7UYUKigVGMjmINFIThpkH0DLXcYGx_9B1YzrX1QfHO2N ...
- Windows Live Writer加载代码着色插件步骤
博客园内置支持SyntaxHighlighter代码着色,代码着色语法:<pre class='brush:编程语言'>代码</pre>. 需要注意的是:如何你使用Syntax ...
- C++中++i与i++
#include "stdafx.h" #include "string" #include "iostream" #include &qu ...
- hzau 1210 Happiness
1210: Happiness Time Limit: 1 Sec Memory Limit: 1280 MBSubmit: 1149 Solved: 301[Submit][Status][We ...
- hdu 5241 Friends(找规律?)
Friends Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total S ...
- linux查看网卡速度
ethtool eth0 会包含速度模式等各项属性信息 lspci|grep -i ether 可以查看硬件设备具体型号,会包含硬件厂商及信息 dmesg |grep -i eth 会显示系统 ...
- NAVICAT PREMIUM 初识
1 问题运行SQL取数语句出错?. 答案:因为运行SQL文件时没有这个表.新的数据库里面 解决方法: 获取需要建立的二维表创建语句 新建查询 输入语句,点击运行即可 解释注释语句: 主体为五个字段的主 ...
- RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理
上一篇已经讲了Rabbitmq如何在Windows平台安装 不懂请移步: RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列 一.理论 .net环境下,C#代码订阅 ...
- [1]移动端页面调试之“weinre大法”
前言 这个也是从早读课转载的.如有侵权请联系我马上下架. 正文从这开始-- 移动端页面调试一般分两步.第一步我们需要把本地(pc端)写的页面效果展现在移动端,一个很方便的办法是用 fiddler 作为 ...
- 21 Python 异常处理
异常和错误 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是fo ...