一文读懂 Python 装饰器

1. Python decorator

什么是装饰器?

装饰器可以看作函数的一个修饰,在不更改原来函数功能的前提下拓展函数的功能。

看一个代码:

import time

def decorator(funct):
	def inner():
		print("What time is it now?")
		funct()
	return inner

def getTime():
	print("The time is " + time.strftime("%H:%M:%S"))

getTime = decorator(getTime)
getTime()

执行结果为:

What time is it now?
The time is 17:56:42

***Repl Closed***

这里通过函数 decorator 修饰函数 getTime,decorator 内部定义了一个 inner(),decorator 的返回值为 inner。decorator 的功能即为在执行 getTime 之前增加一个输出提示!


2. 使用 @

Python给提供了一个装饰函数更加简单的写法:

def decorator(funct):
	def inner(param1, param2):
		# xxx
		funct(param1, param2)
		# xxx
	return inner
	
@decorator
def funct():
	pass

如通过装饰器测量一个函数执行的时间:

import time

def decorator(funct):
	def inner(n):
		begin = time.time()
		funct(n)
		end = time.time()
		result = end - begin
		print(f'Duration is {result} ms')
	return inner

@decorator
def run(n):
	while n > 0:
		n = n - 1
run(10000000)

测试结果如下:

Duration is 0.3730003833770752 ms

***Repl Closed***

END

你可能感兴趣的:(python,python)