Python9-装饰器-day11

import time
def timmer(f): #装饰器函数
def inner():
start = time.time()
ret = f() #被装饰的函数
end = time.time()
print(end-start)
return ret
return inner
@timmer #魔法糖 @装饰器函数名 ====>func = timmer(func)
def func(): #被装饰的函数
time.sleep(0.01)
print('hahaha')
return 'good st'
# func = timmer(func)
ret = func()
print(ret)
#不想修改函数的调用方式,但是还想在原来的函数前后添加功能
#timmer就是一个装饰器函数,只对一个函数有一些装饰作用
#原则: 开放封闭原则
#开放 :对扩展是开放的
#封闭 :对修改是封闭的
#装饰带参数函数的装饰器
def timmer(f): #装饰器函数
def inner(a):
start = time.time()
ret = f(a) #被装饰的函数
end = time.time()
print(end-start)
return ret
return inner
@timmer #魔法糖 @装饰器函数名
def func(a): #被装饰的函数
time.sleep(0.01)
print('hahaha',a)
return 'good st'
# func = timmer(func)
ret = func(1)
print(ret)
多参数
def timmer(f): #装饰器函数
def inner(*args,**kwargs):
start = time.time()
ret = f(*args,**kwargs) #被装饰的函数
end = time.time()
print(end - start)
return ret
return inner @timmer #魔法糖 @装饰器函数名
def func(a,b): #被装饰的函数
time.sleep(0.01)
print('hahaha',a,b)
return 'good st' @timmer #魔法糖 @装饰器函数名
def func1(a): #被装饰的函数
time.sleep(0.01)
print('hahaha',a)
return 'good st' # func = timmer(func)
ret = func(1,2)
ret = func(1,b=2)
print(ret)
装饰器定式
def wapper(f): #装饰器函数 f是被装饰的函数
def inner(*args,**kwargs):
'''在被装饰函数之前要做的事'''
ret = f(*args,**kwargs) #被装饰的函数
'''在被装饰函数之后要做的事'''
return ret
return inner @wapperr #魔法糖 @装饰器函数名
def func(a,b): #被装饰的函数
time.sleep(0.01)
print('hahaha',a,b)
return 'good st'
Python9-装饰器-day11的更多相关文章
- 函数名、闭包、装饰器 day11
1, 函数名的内存地址,print(func) 2, 函数名可以赋值给其他变量 3, 函数名可以当做容器类的元素 4, 函数名可以当做函数的参数. 5, 函数名可以当做函数的返回值. 学名:第一对象 ...
- day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)
day11:装饰器(装饰器形成.装饰器作用.@语法糖.原则.固定模式) 装饰器形成:最简单的.有返回值的.有一个参数的.万能参数 函数起的作用:装饰器用于在已经完成的函数前后增加功能 语法糖:使代码变 ...
- day11.装饰器初识
1.开放封闭原则 原则: 开放封闭原则,对扩展是开放的,对修改是封闭的. 封版概念:当写好一个功能以后,就不可以再修改此函数,避免下面一系列的调用产生错误. 因此产生了装饰器 2.装饰器形成过程 我们 ...
- day11(python)装饰器
def wrapper(f):#1 def inner(*args,**kwargs):#3 ret = f(*args,**kwargs)#5 return ret#8 return inner#4 ...
- Day11 Python基础之装饰器(高级函数)(九)
在python中,装饰器.生成器和迭代器是特别重要的高级函数 https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...
- day11 装饰器---函数的使用方法
这个是一个难点,以后面试会经常出现的,要搞懂! 装饰器升级版,进阶内容1: def outer(flag): def wrapper(func): def inner(*args,**kwargs): ...
- day11 python之函数装饰器
一,什么是装饰器? 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事 ...
- python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)
一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...
- day11:装饰器
1,引子,计算函数的运行时间: import time def func(): time.sleep(0.01) # 为了计算运行时间差的时候有值 print("func") de ...
- day11 闭包函数和装饰器
1.函数不是新知识点 主要是学习函数的用法 在面向对象编程中,一切皆对象,函数也不例外 具体的表现 1.函数可以引用 2.函数可以作为函数的参数 3.函数可以作为函数的返回值 4.可以被存储到容器类型 ...
随机推荐
- [题解](数学)BZOJ_1257_余数求和
来源:https://blog.csdn.net/loi_dqs/article/details/50522975 并不知道为什么是sqrt(n)的段数......书上写的看不懂...... 但是这个 ...
- NOIP前计划
距离NOIp还有13天 距离继续学/退役还有13天 是时候列一波计划了 1. 要学的东西 cdq分治(突然发现cdq分治不太行,而且说不定可以用来代替想不出来的数据结构题) 主席树(写的太少啦,不熟练 ...
- Virtual Judge使用指南
https://cn.vjudge.net/ Virtual Judge并不是常规的Online Judge平台,他通过爬取其他OJ的题目,让我们可以直接在VJ上查找并提交各种OJ的题目,然后将我们的 ...
- JAVA常用知识总结(十二)——数据库(二)
MySQL主从热备份工作原理 简单的说:就是主服务器上执行过的sql语句会保存在binLog里面,别的从服务器把他同步过来,然后重复执行一遍,那么它们就能一直同步啦. 整体上来说,复制有3个步骤: 作 ...
- volatile关键字简单摘要
volatile就可以说是java虚拟机提供的最轻量级的同步机制 特性: 1.保证共享变量的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的——要了解主存.高速缓存还有Java内 ...
- 系统讲解一下,Dao,Entity,Servlet,Action各自有什么东西-Java/Web开发
dao 主要是一些接口,里面定义了一些用于增删改查的方法名 daoImpl 就是对dao的具体实现 Service 同上,也是一些接口,主要是用来调用dao层的一些方法,所以这里定义的方法一般都定义好 ...
- springJDBC 事物隔离
五.Spring-jdbc的实现 第一步:导jar包 pom.xml <!--引入spring-beans节点--><dependency> <groupId> ...
- JS排序--快速排序
用 JavaScript 实现快速排序代码如下: /* * @author liphong * @data 2019/02/24 */ var arr = []; // 需要被排序数组 /* * 分离 ...
- The Django Book - 第四章 模板2
模板(相应)使用的几种方式: 1.使用HttpResponse返回字符串HTML from django.http import HttpResponse def current_datetime(r ...
- Codeforces Round #316 (Div. 2) B Simple Game 贪心
贪心,如果m分成的两个区间长度不相等,那么选长的那个区间最接近m的位置,否则选m-1位置,特判一下n等于1的情况 #include<bits/stdc++.h> using namespa ...