python 装饰器
发布时间:2020-12-20 10:28:34 所属栏目:Python 来源:网络整理
导读:了解一下什么是装饰器? 装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是增加其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。 ? 首先我们来看一下 Python 中的嵌套函数: def func1(): #定义函数func1 pri
了解一下什么是装饰器? 装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是增加其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。 ? 首先我们来看一下 Python 中的嵌套函数: def func1(): #定义函数func1 print(‘now you are inside the hi()‘) def greet(): #在函数中嵌套一个函数greet return ‘now you are in the gree()‘ #return返回一组字符串 def welcome(): return ‘now you are in the welcome()‘ print(greet()) #打印greet print(welcome()) #打印greet func1() #调用func1函数 如果在程序中打印greet以及welcome时不加括号,程序输出的会是greet以及welcome函数的内存地址 def func1(name): #定义一个func1函数并且传入一个参数name def greet(): #定义greet函数 return "now you are in the greet() function" #return返回一组字符串 def welcome(): return "now you are in the welcome() function" if name == "snake": #if判断,如果值对即返回greet return greet else: #否则返回welcome return welcome a = func1(name=‘snake‘) #实例化对象,并且给传入的参数赋一个值 print(a) # outputs: <function greet at 0x7f2143c01500> # 上面清晰地展示了`a`现在指向到func1()函数中的greet()函数 print(a()) # outputs: now you are in the greet() function
? 解释器的使用 import time #导入一个time模块 def timer(func): #装饰函数 def inner(): #闭包函数 start=time.time() func() #函数调用 print(time.time()-start) return inner #返回inner 切记不能加括号,否则就成了调用函数 def func1(): #被装饰函数 print(‘in func1‘) time.sleep(2) #等待两秒后继续 func1=timer(func1) #地址的一个改变 func1() #本质上调用的是inner ? 其实这样使用是比较麻烦的,接下来会使用一个python解释器自带的装饰函数 ? 现在我们使用@(python 解释器的装饰函数),试一下 import time #导入time模块 def timer(func): #装饰函数 def inner(): #闭包函数 start=time.time() #定义一个变量start来获取程序开始执行的时间 func() #调用func print(time.time()-start) #输出程序执行完成使用的时间 return inner #返回inner 切记不能加括号,否则就成了调用函数 @timer #python解释器的装饰函数(@加上需要装饰函数的名称) def func1(): #被装饰函数 print(‘in func1‘) time.sleep(2) #程序等待两秒执行 #func1=timer(func1) #地址的一个改变 func1() #本质上调用的是inner 装饰器实际上是个python函数,实现是由闭包支撑的 ?
好了!今天的介绍的python装饰器到此就结束! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |