Найти - Пользователи
Полная версия: декоратор
Начало » Python для новичков » декоратор
1 2
rascally_rabbit
 from functools import wraps
def add_msg(start_msg, end_msg):
	def some_decorator(func):
		@wraps(func)
		def result(*args, **kwargs):
			print(start_msg, func.__name__)
			func(*args, **kwargs)
			print(end_msg, func.__name__)
		return result
	return some_decorator
@add_msg("старт функции", "завершение функции")
def test(a, b):
	print(a * b)
test(2, 5)

Правда не совсем понял, почему меняется атрибут __name__ декорируемой функции.
4kpt_IV
Что-то делаете не так, наверное
И __name__ и __doc__ должны остаться как есть…
rascally_rabbit
Прошу прощение, неправильно выразился.
В первом варианте менятеся, без врапера.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB