python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。

3.1 定义装饰器,定义函数。
def xxx():
函数体

3.2 应用装饰器
在需要使用的函数、方法上@xxx即可。
注意:只要函数应用装饰器,那么函数就被重新定义,重新定义为:装饰器的内层函数。

装饰器含无参数的示例:

 def outer(func):
def inner():
print('hello')
print('hello')
print('hello')
#原f1函数
r = func() # r = None
print('end')
print('end')
print('end')
reture r
reture inner @outer
def f1():
return "f1" f1() #调用者 #原理:
#1、执行outer函数,并且将下面的函数名,当做参数,即f1 = func
#2、将outer的返回值重新赋值给f1 = outer的返回值
#3、新的f1函数 = inner """
输出结果:
hello
hello
hello
f1
end
end
end
"""

装饰器含传递两个参数的示例:

 def outer(func):
def inner(a1, a2): #传递两个参数
print("")
ret = func(a1, a2) #传递两个参数
print("")
return ret
reture inner @outer
def index(a1, a2):
print("操作很复杂")
return a1 + a2 index(1, 2) #调用者

装饰器含N个参数的函数示例:

注意:一个函数是可以应用多个装饰器。多个装饰器时先执行最外层的装饰器。

 def outer(func):
def inner(*arg, **kwargs): #可接收多个参数
print("")
ret = func(*arg, **kwargs) #可接收多个参数
print("")
return ret
reture inner @outer
def f1(arg): #传递一个参数
print("我传递了一个参数")
reture "f1" @outer
def index(a1, a2): #传递两个参数
print("我传递了一个参数")
return a1 + a2 @outer
def f2(a1, a2, a3):
print("我传递三个参数")
return "f2" f1(123) #调用者传递一个参数
index(1, 2) #调用者传递两个参数
f2(1, 2, 3) #调用者传递三个参数

python --装饰器内容讲解的更多相关文章

  1. python --装饰器通俗讲解

    装饰器 什么是装饰器?:在不修改源代码和调用方式的基础上给其增加新的功能,多个装饰器可以装饰在同一个函数上 Python中的装饰器是你进入Python大门的一道坎; 装饰器特点: 不改变原函数原代码: ...

  2. Python装饰器与面向切面编程

    今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数 ...

  3. Python装饰器讲解

    Python装饰器讲解 定义:本质是函数,就是为其他函数添加附加功能.原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 import time def timmer(func ...

  4. Python学习:11.Python装饰器讲解(二)

    回顾 上一节我们进行了Python简单装饰器的讲解,但是python的装饰器还有一部分高级的使用方式,这一节就针对python装饰器高级部分进行讲解. 为一个函数添加多个装饰器 今天,老板又交给你一个 ...

  5. day5学python 基础+装饰器内容

    基础+装饰器内容 递归特性# 1.必须有一个明确的结束条件# 2.每次进入更深一层递归时,问题规模相比上次递归应有所减少# 3.递归效率不高 def run(n): print(n) if int(n ...

  6. 一篇关于Python装饰器的博文

    这是一篇关于python装饰器的博文 在学习python的过程中处处受阻,之前的学习中Python的装饰器学习了好几遍也没能真正的弄懂.这一次抓住视频猛啃了一波,就连python大佬讲解装饰器起来也需 ...

  7. Python——装饰器(Decorator)

    1.什么是装饰器? 装饰器放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上.和这个函数绑定在一起.在我们调用这个函数的时候,第一件事并不是执行这个函数,而是将这个函数做为参数传入它头顶 ...

  8. python装饰器在接口自动化测试中的应用

    在讲解装饰器在接口自动化测试项目的应用之前,我们先来介绍一下python装饰器到底是个什么 装饰器 说装饰器就不得不提一下函数这个一等公民了,在python中函数有几个特性先来了解一下 函数的一些特性 ...

  9. Python 装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...

随机推荐

  1. FreeSWITCH 总体架构

    [1]总体结构 [2]代码结构目录 [3]模块简介 Applications应用 mod_abstraction – 提供了一个抽象的API调用(未来有更多功能)Provides an abstrac ...

  2. golang面对对象

  3. python面试题_01

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没多大 ...

  4. SUSE12Sp3-使用Docker导入镜像并安装redis,zookeeper,kafka

    首先在另外一台联网电脑拉取最新的redis,zookeeper,kafka镜像 docker pull redis docker pull zookeeper docker pull wurstmei ...

  5. VMware Workstation报错 : 另一个正在运行的VMware进程可能正在使用配置文件

    这个问题出现于虚拟机卡死后用任务管理器关闭了VMware,然而还有虚拟机的进程在运行而且还关不掉(三步操作便可解决这一问题) 一.打开系统配置使用程序进行设置 1.Win+R打开运行输入:msconf ...

  6. Linux下快速安装Python3和pip

    如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 一.安装p ...

  7. 2019 东方财富网java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.东方财富网等公司offer,岗位是Java后端开发,因为发展原因最终选择去了东方财富网,入职一年时间了,也成为 ...

  8. Django---Django的中间件

    Django---Django的中间件 一丶中间件介绍 什么是中间件 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Dj ...

  9. English--五大基本句型基本概念

    English|五大基本句型基本概念 英语的基本句型是整个英语的框架体系,所以,祝愿看到此文的伙伴们,都可以牢牢掌握! 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力 ...

  10. 在safari上,解决fixed失效问题

    一个页面中有头部.底部和中间内容区域,底部固定在屏幕底端. 头部header 内容main 底部footer 方法一.在main上使用fixed定位,加上overflow-y属性. .main { p ...