1,装饰器的形成

    编程原则:开放封闭原则。

    开放:对扩展是开放的

    封闭:对修改是封闭的

  因为修改是封闭的,所以为了对函数进行功能的扩展,就使用装饰器!

  2,装饰器的定义

# wrapper就是一个装饰器函数,就是对一个函数有一些装饰效果
def wrapper(f): # 装饰器函数,f是被装饰的函数
def inner(*args, **kwargs):
# 在被装饰函数之前想增加的功能
ret = f(*args, **kwargs) # 被装饰的函数
# 在被装饰函数之后想增加的功能
return ret # 接收被装饰函数的返回值
return inner
# 装饰器的作用:不修改函数的调用方式,且能在函数的前后添加功能

  3,装饰器的使用

@wrapper    # 语法糖 @装饰器函数名 相当于func = time_count(func)
def func(): # 被装饰的函数
time.sleep(1)
print('zxc')
return 'hahaha'
ret = func() # zxc
print(ret) # hahaha

  4,装饰器实例

import time
# 计算函数运行时间
def wrapper(f): # 装饰器函数,f是被装饰的函数
def inner(*args, **kwargs):
start = time.time()
ret = f(*args, **kwargs) # 被装饰的函数
end = time.time()
print(end-start)
return ret # 接收被装饰函数的返回值
return inner @wrapper
def func(): # 被装饰的函数
print('zxc')
func() # 打印zxc 打印函数hunc的运行时间

python基础十之装饰器的更多相关文章

  1. python基础-内置装饰器classmethod和staticmethod

    面向对象编程之classmethod和staticmethod classmethod 和 staticmethod都是python内置的装饰器 classmethod 的作用:给在类内部定义的方法装 ...

  2. python基础5之装饰器

    内容概要: 一.装饰器前期知识储备 1.python解释函数代码过程: python解释器从上往下顺序解释代码,碰到函数的定义代码块不会立即执行它,而是将其放在内存中,等到该函数被调用时,才执行其内部 ...

  3. python基础篇_004_装饰器函数

    python装饰器函数 1.装饰器函数引导 功能:计算函数执行时长 import time """ 方式一: 函数首位添加时间,差值就是函数执行时间 缺点:每个函数都要加 ...

  4. python基础-面向对象(装饰器)

    属性:   @property   @method_name.setter   @method_name.deleter   三个标签都是放在方法的上面来使用,且方法名要和后续使用的   变量名字相一 ...

  5. python基础-5.2装饰器

    1.了解装饰器前准备 #### 第一波 #### def foo(): print 'foo' foo #表示是函数,仅指向了函数的地址,为执行 foo() #表示执行foo函数 #### 第二波 # ...

  6. python基础之内置装饰器

    装饰器 简介 功能与格式 内置装饰器 @classmethod @propertry @staticmethod 其它 ---------------------------------------- ...

  7. 【笔记】Python基础五:装饰器

    一,什么是装饰器 本质就是函数,功能是为其他函数添加附加功能 原则: 1,不修改被修饰函数的源代码 2,不修改被修饰函数的调用方式 例子: import time def timmer(func): ...

  8. python 基础篇 12 装饰器进阶

    本节主要内容:1. 通⽤装饰器回顾2. 函数的有⽤信息3. 带参数的装饰器4. 多个装饰器同时装饰⼀个函数 ⼀. 通⽤装饰器的回顾开闭原则: 对增加功能开放. 对修改代码封闭装饰器的作⽤: 在不改变原 ...

  9. python基础-函数之装饰器、迭代器与生成器

    1. 函数嵌套 1.1 函数嵌套调用 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数 def bar(): print("from in the bar.") def f ...

随机推荐

  1. linux下Nginx安装Zend Optimizer组件步骤

    注意:Zend Optimizer 在php5.3以上的版本已经集成了,所以php5.3以上的版本没必要安装了.而推出了Zend Guard Loader. http://www.zend.com/e ...

  2. php中实现多线程的的两个方法具体是怎样?

    假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转.你可能会写下面这样的代码:代码如下: <?php$hosts = array("host1.sample.com ...

  3. SpringMvc表单标签库

    HTML密码框 <td><form:label path="password">密码:</form:label></td><t ...

  4. 【JZOJ3885】【长郡NOIP2014模拟10.22】搞笑的代码

    ok 在OI界存在着一位传奇选手--QQ,他总是以风格迥异的搞笑代码受世人围观 某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据 while 序列长度<n do { 随机生成一个整数属 ...

  5. python学习之旅1-2(基础知识)

    三,python基础初识. 1.运行python代码. 在d盘下创建一个t1.py文件内容是: print('hello world') 打开windows命令行输入cmd,确定后 写入代码pytho ...

  6. com.alibaba.dubbo.remoting.TimeoutException

    maven项目 update clean install 重启 服务消费者

  7. MUI - myStorage在ios safari无痕浏览模式下的解决方案

    myStorage在ios safari无痕浏览模式下的解决方案 今天看到了这个帖子LocalStorage 在 Private Browsing 下的一个限制, 吓尿了,如果用户开启了无痕浏览,ap ...

  8. Linux配置redis开机启动(CentOS 7)

    https://blog.csdn.net/qq_31803503/article/details/79246205 本次配置linux版本是CentOS 7 首先将  redis-3.2.3/uti ...

  9. python 并发之线程

    一.什么是线程 #指的是一条流水线的工作过程,关键的一句话:一个进程内最少自带一个线程,其实进程根本不能执行,进程不是执行单位,是资源的单位,分配资源的单位 #线程才是执行单位 #进程:做手机屏幕的工 ...

  10. oracle表内连接和外连接

    n  概述 表连接分为内连接和外连接 n  内连接 内连接实际上就是利用where子句对两张表形成的笛卡尔集进行筛选,我们前面学习的查询都是内连接,也是在开发过程中用的最多的连接查询. 基本语法: s ...