python装饰器

Python学习————无参装饰器

假如想象 提交于 2020-03-23 19:05:14
目录 一:储备知识 1、 *args, **kwargs 2、名称空间与作用域:名称空间的的"嵌套"关系是在函数定义阶段,即检测语法的时候确定的 3、函数对象: 二 、装饰器 1、什么是装饰器 2、为何要用装饰器 3、如何用 三、语法糖:让你开心的语法 总结无参装饰器模板 一:储备知识 1、 *args, **kwargs def index(x,y): print(x,y) def wrapper(*args,**kwargs): index(*args,**kwargs) # index(y=222,x=111) wrapper(y=222,x=111) 2、名称空间与作用域:名称空间的的"嵌套"关系是在函数定义阶段,即检测语法的时候确定的 3、函数对象: 可以把函数当做参数传入 可以把函数当做返回值返回 def index(): return 123 def foo(func): return func foo(index) 4、函数的嵌套定义: def outter(func): def wrapper(): pass return wrapper 5.闭包函数 def outter(): x=111 def wrapper(): x return wrapper f=outter() 传参的方式一:通过参数的形式为函数体传值 def wrapper(x): print(1

Python装饰器学习(九步入门)

廉价感情. 提交于 2020-03-23 17:23:27
Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式。 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次''' def myfunc(): print ( "myfunc() called." ) myfunc() myfunc() 第二步:使用装饰函数在函数执行前和执行后分别附加额外功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # -*- coding:gbk -*- '''示例2: 替换函数(装饰) 装饰函数的参数是被装饰的函数对象,返回原函数对象 装饰的实质语句: myfunc = deco(myfunc)''' def deco(func): print ( "before myfunc() called." ) func() print ( " after myfunc() called." ) return func def myfunc(): print ( " myfunc() called." ) myfunc = deco(myfunc) myfunc() myfunc() 第三步:使用语法糖@来装饰函数 1 2 3 4 5 6 7 8 9 10 11

Python之迭代器、装饰器、软件开发规范

喜你入骨 提交于 2020-03-23 09:00:27
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需求,看列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 1 >>> a 2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 3 >>> b = [] 4 >>> for i in a:b.append(i+1) 5 ... 6 >>> b 7 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 8 >>> a = b 9 >>> a 10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 普通青年版 a = [1,3,4,6,7,7,8,9,11] for index,i in enumerate(a): a[index] +=1 print(a) 原值修改 1 >>> a 2 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 3 >>> a = map(lambda x:x+1, a) 4 >>> a 5 <map object at 0x101d2c630> 6 >>> for i in a:print(i) 7 ... 8 3 9 5 10 7 11 9 12 11

第四周 day4 python学习笔记

不羁岁月 提交于 2020-03-22 00:02:31
关于装饰器的更多信息可以参考 http://egon09.blog.51cto.com/9161406/1836763 1.装饰器Decorator 装饰器:本质上是函数,(装饰其他函数),就是为其他函数添加附加功能 原则:不能修改被装饰函数的源代码;不能修改被装饰函数的调用方式 #实现装饰器的知识储备: 1.函数即变量 2.高阶函数,有两种方式: (1)把一个函数名当做实参传递给另一个函数(在不修改被装饰函数源代码的情况下为其添加功能) (2)返回值中包含函数名(不修改函数调用的方式) 3.嵌套函数 高阶函数+嵌套函数==》装饰器 import time #计算一个函数的运行时间的装饰器 def timer(func): def wrapper(*kargs,**kwargs): start_time=time.time() func() end_time=time.time() print("the func runtime is %s"%(end_time-start_time)) return wrapper @timer def test1(): time.sleep(3) print("in the test1....") test1() #高阶函数 def bar(): print("in the bar...") def test(func): print(func

Python装饰器的使用【面试必学】

我是研究僧i 提交于 2020-03-21 15:56:52
装饰者模式是常用的软件设计模式之一。通过此设计模式,我们能够在不修改任何底层代码情况下,给已有对象赋予新的职责。python中可以用装饰器简单地实现装饰者模式。 PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python实战教程免非下,,一起相互监督共同进步! 1.1 将函数作为参数传递 在 C/C++ 中,函数指针可以将函数作为参数传递给另一函数。而在 python 中,函数也是对象的一种,函数可以被引用,也可直接作为参数传入函数,以及作为容器对象的元素。python中可以采用如下方法实现装饰者模式: #!/usr/bin/env python3.6 # -*- coding: utf-8 -*- def add(x, y): result = x+y return result def log(func): def wrapper(*args, **kwargs): result = func(*args) print(func.__name__,'has been called\n') return result return wrapper if __name__ == '__main__': print(log

python 装饰器

荒凉一梦 提交于 2020-03-21 09:05:19
python 装饰器 1、必备 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #### 第一波 #### def foo(): print 'foo' foo #表示是函数 foo() #表示执行foo函数 #### 第二波 #### def foo(): print 'foo' foo = lambda x: x + 1 foo() # 执行下面的lambda表达式,而不再是原来的foo函数,因为函数 foo 被重新定义了 2、需求来了 初创公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作、redis调用、监控API等功能。业务部门使用基础功能时,只需调用基础平台提供的功能即可。如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ############### 基础平台提供的功能如下 ############### def f1(): print 'f1' def f2(): print 'f2' def f3(): print 'f3' def f4(): print 'f4' ############### 业务部门A 调用基础平台提供的功能 ############### f1() f2() f3() f4() ######

python之集合,函数,装饰器

偶尔善良 提交于 2020-03-20 18:24:39
本节主要内容如下:   1. set集合   2. 函数      -- 自定义函数      -- 内置函数   3. 装饰器 一. set 集合:       一个无序且不重复的序列。       tuple算是list和str的杂合(杂交的都有自己的优势,上一节的末后已经显示了),那么set则可以堪称是list和dict的杂合.       set拥有类似dict的特点:可以用{}花括号来定义;其中的元素没有序列,也就是是非序列类型的数据;而且,set中的元素不可重复,这就类似dict的键.       set也有继承了一点list的特点:如可以原处修改(事实上是一种类别的set可以原处修改,另外一种不可以).   1.2 集合的创建:    1 s1 = {11,22,11,33,22} #第一种创建方法 2 print(s1) 3 4 {33, 11, 22} 1 s2 = set([11,22,11,33,22]) #第二种创建方法 2 print(s2) 3 4 {33, 11, 22} 1 s3 = set() #创建一个空的集合   例子: 1 s4 = set('chooses') 2 print(s4) 3 print(type(s4)) 4 5 {'s', 'c', 'e', 'o', 'h'} 6 <class 'set'> 注:

Python 装饰器

吃可爱长大的小学妹 提交于 2020-03-18 04:38:05
Python装饰器 有这样一个函数,代码如下: 1 2 3 4 5 6 7 from functools import reduce def sum (): total = reduce ( lambda x,y: x + y, range ( 100000 )) print (total) sum () 现在我们需要计算该函数执行所花的时间,代码如下 1 2 3 4 5 6 7 8 9 10 11 import time from functools import reduce def sum (): start_time = time.time() total = reduce ( lambda x,y: x + y, range ( 10000 )) end_time = time.time() print (total) print ( "time cost %fs" % (end_time - start_time)) sum () 如果有几十个不同的函数需要计算函数执行所花的时候,每个都加上这几条语句的话,麻烦而且浪费时间,这里,我们就可以用到装饰器了,装饰器的使用在要使用的函数上面加上@以及装饰器的函数名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import time from functools import reduce

Python基础知识之装饰器

蹲街弑〆低调 提交于 2020-03-14 02:25:13
                      装饰器 https://www.cnblogs.com/EVA-J/articles/7194277.html 1. 装饰器的形成过程 2.装饰器的作用 3.语法糖 原则: 开放封闭原则 ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 固定模式:装饰器固定模式 =========================================================================================== 1. import time def func(): time.sleep(0.01) print("大家好") def timer(f): start = time.time() f() end = time.time() print(end-start) timer(func) 解读这段代码 !   首先 ,我们定义一个函数 func为例实现 leader交给我的功能! ok ,这个func函数假装已经完成我们想要的功能 。  

python装饰器的使用方法

寵の児 提交于 2020-03-12 13:17:55
python装饰器的使用方法 1.函数作为参数出现,2,作为闭包出现 例: # 无参数装饰器 def house(func): def wapper(): func() print("进行装修") return wapper @house def new_house(): print("这是一个毛坯房") new_house() 含有参数的函数,需要在装饰器加上对应的函数 def house(func): def wapper(name): #传入对应的参数值 func(name) #传入对应的参数值 print("进行装修") return wapper @house def new_house(name): print("户主是{},这是一个毛坯房".format(name)) new_house("小明") 含有多个参数的函数,需要在装饰器加上对应的函数 def house(func): def wapper(*args,**kwargs): func(*args,**kwargs) print("进行装修") return wapper @house def new_house(*args,**kwargs): #使用*args,**kwargs print("户主是{},这是一个毛坯房".format(args)) new_house("小明") 结合使用装饰器的例: