装饰器

定义:本质是函数,(只不过是用来装饰其他函数而已),就是为其他函数添加附加功能

原则:

  • 1. 不能修改被修饰函数的源代码
  • 2.不能修改被修饰函数的调用方式

实现装饰器的知识储备

  • 1.函数即“变量”
  • 2.高阶函数
    • a.把一个函数名当做实参传给另外一个函数
    • b.返回值中包含函数名
  • 3.嵌套函数

综上,高阶函数 + 嵌套函数 ===> 装饰器

程序示例:

def fun(bar):
def dec():
print('this is dec')
bar()
return dec @fun #test = fun(test) test = dec
#####################下面是被装饰函数##########################
def test():
print('test is here') test()

把text传给bar的时候,bar就相当于之前的text了,在执行@fun的时候,函数fun(text)运行后,返回dec给text,那么此时text已经不是之前的text了,此时text已经成了dec,也就是我们的装饰函数,由于之前我们把text悄悄传给了bar,那么装饰函数运行完之后,调用bar()就解决了。

记住:返回值包含函数名

此处建议断点调试

python_3 装饰器之初次见面的更多相关文章

  1. Python装饰器之functools.wraps的作用

    # -*- coding: utf-8 -*- # author:baoshan def wrapper(func): def inner_function(): pass return inner_ ...

  2. Python装饰器之 property()

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

  3. python 闭包 闭包与装饰器之间的关系

    一.一个闭包的实际应用例子 def func(a, b): def inner(x): return a * x + b return inner inn = func(1, 1) print(inn ...

  4. python 装饰器之应用示例

    import time import hashlib import pickle import threading #装饰函数缓存应用 cache ={} def is_obsolete(entry, ...

  5. python迭代器、生成器、装饰器之装饰器

    装饰器...... 定义:本质是函数,为其他函数添加附加功能 原则: 1.不能修改被装饰的函数的源代码 2.不能修改被装饰函数的调用方式 仔细观察下面代码,看看有什么发现. 内嵌函数+高阶函数+闭包= ...

  6. Python 装饰器之 functools.wraps

    在看 Bottle 代码中看见 functools.wraps 这种用法. def make_default_app_wrapper(name): """ Return ...

  7. python装饰器之函数作用域

    1.函数作用域LEGB L:local函数内部作用域 E:enclosing函数内部与内嵌函数之间 G:global全局作用域 B:build-in内置作用域 passline = 60 def fu ...

  8. python_3 装饰器参数之谜

    装饰器参数之谜 之前已经初步了解过装饰器了,知道了装饰器可以"偷梁换柱",在不改变函数的调用方式和函数内容的时候,而把函数的功能偷偷地修改. 那么问题来了,如果被修改的函数中有参数 ...

  9. python装饰器之使用情景分析

    http://blog.csdn.net/yueguanghaidao/article/details/10089181

随机推荐

  1. Barcodex帮助文档

    前言 官方文档及ocx控件下载,下载很慢,直接上传到博客园文件管理中了. http://files.cnblogs.com/files/masonblog/barcodex.zip 帮助文档 Prop ...

  2. 基于docker,consul,consul-template, registrator, nginx服务注册发现集群

      介绍 该工程主要实现服务的自动注册发现,从而达到提高运维效率,做到服务的自动发现和动态扩展. 服务注册发现 服务启动后自动被发现 动态变更负载均衡 自动伸缩 工具 1.Registrator 这是 ...

  3. SQL语句中case,when,then的用法

    用法如下bai: 复制代码 SELECT s.s_id, s.s_name, s.s_sex, CASE WHENs.s_sex='1'THEN'男' WHENs.s_sex='2'THEN'女' E ...

  4. 将后端返回的数据在jsp中拼接成table列表

    //先下载jquery js文件 放入项目中 jsp文件内容 <%@ page language="java" pageEncoding="UTF-8"% ...

  5. 搭建一个简单的springMVC框架

    //新建一个简单的maven项目,选择war包 //web.xml配置 <?xml version="1.0" encoding="UTF-8"?> ...

  6. FaaS,未来的后端服务开发之道

    说 FaaS 先要说说 PaaS 平台即服务(Platform as a Service)是一种云计算服务,提供运算平台与解决方案堆栈即服务.在云计算的典型层级中,平台即服务层介于软件即服务与基础设施 ...

  7. tail常用命令总结

    tail命令作用: tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到 ...

  8. TurtleBot3 Waffle (tx2版华夫)(2)系统安装

    Tx2系统默认是安装好的,由于镜像文件大于20G,无法上传百度网盘,所以如有需要请联系我们客服:下面主要是操作步骤: 2.1.准备工作 a.准备好利用Jetpack刷过机的Ubuntu的主机(HOST ...

  9. Vue——监听器watch

    使用watch来侦听data中数据的变化,watch中的属性(watch是对象格式)一定是data 中已经存在的数据. 使用场景:数据变化时执行异步或开销比较大的操作. 典型应用:http://www ...

  10. Hbase相关参数详解

    转载:http://www.cnblogs.com/nexiyi/p/hbase_config_94.html 版本:0.94-cdh4.2.1 hbase-site.xml配置 hbase.tmp. ...