@Advanced syntaxe python (décorateur) jelly beans de grammaire.

décorateur de fonction python

Comme son nom l'indique, le décorateur est utilisé pour le traitement secondaire d'une fonction. Par exemple, nous avons travaillé si dur pour écrire une fonction et maintenant nous devons ajouter de nouvelles fonctions, alors que faites-vous en ce moment? Évidemment, il ne vaut pas la peine de modifier à nouveau le code si la quantité de code est importante. En d'autres termes, il est nécessaire d'ajouter la même fonction à plusieurs fonctions Si le collage et la copie ne sont évidemment pas très efficaces, cette fois le décorateur est introduit.

Donner une châtaigne

Maintenant, nous définissons une fonction

import time
def need_change():
	time.sleep(2)#让它沉睡2秒

Ensuite, nous devons maintenant ajouter une fonction de minutage pour calculer le temps d'exécution de ce programme.
Changez-le pour qu'il ressemble à ceci

import time
def need_change():
	star=time.time()
	time.sleep(2)#让它沉睡2秒
	end=time.time()
	print(end-star)

Très bien, des fonctions modifiées et ajoutées avec succès, j'ai donc encore 10 programmes de ce type qui doivent ajouter de telles fonctions.

Ecrire des fonctions décoratives

Notre but est d'obtenir une nouvelle fonction avec des fonctions ajoutées, dans ce cas, nous définissons directement une fonction et cette fonction peut renvoyer une nouvelle fonction.

def decorate(func):
	def new_function():
		star=time.time()
		func()
		end=time.time()
		print(end-star)
	return new_function
		
	

Vous pouvez donc voir que nous renvoyons directement une nouvelle fonction.

import time
def need_change():
	time.sleep(2)#让它沉睡2秒

def decorate(func):
	def new_function():
		star=time.time()
		func()
		end=time.time()
		print(end-star)
	return new_function

need_change= decorate(need_change)
need_change()

Insérez la description de l'image ici
Mais ce qu'il faut noter ici, c'est que la fonction need_change n'est en fait pas l'original, mais la fonction new_function.
Sinon, vous pouvez consulter ce code;

import time
def need_change():
	time.sleep(2)#让它沉睡2秒

def decorate(func):
	def new_function():
		star=time.time()
		func()
		end=time.time()
		print(end-star)
	return new_function
print('我是这个函数%s'%need_change.__name__)

need_change= decorate(need_change)
need_change()

print('我是这个函数%s'%need_change.__name__)

Insérez la description de l'image ici

L'utilisation de jelly beans

Pour plus de commodité, nous pouvons modifier le code.

import time


def decorate(func):
	def new_function():
		star=time.time()
		func()
		end=time.time()
		print(end-star)
	return new_function
@decorate
def need_change():
	time.sleep(2)#让它沉睡2秒
need_change()


print('我是这个函数%s'%need_change.__name__)

Ce symbole @ équivaut à

need_change= decorate(need_change)

Insérez la description de l'image ici
D'accord, c'est tout.

Je suppose que tu aimes

Origine blog.csdn.net/FUTEROX/article/details/107869159
conseillé
Classement