Например, у меня есть несколько функций, обрабатывающих текст из файла. Чтобы избежать необходимости открывать или закрывать файлы, я хочу использовать декоратор, который (1) импортирует файлы, (2) передает строки обработчику текста и (3) сохраняет файл.
Предполагая, что строки содержат содержимое файла file.abc, у меня получилось следующее:
Код: Выделить всё
def readwrite(func):
def inner(*args, **kwargs):
if 'file' not in kwargs.keys():
print("Opening", args[0])
lines = "lorem ipsum and all that" #Assume file returns this content.
else:
print("Reading", kwargs['file'])
lines = 'lorem ipsum and all that'
func(*args, **kwargs)
print("Closing file")
return
return inner
@readwrite
def remove_lipsum(lines):
print("Removing ipsum from ", lines)
return
remove_lipsum('file.abc')
Код: Выделить всё
Opening file.abc
Removing ipsum from file.abc
Closing file
Как правильно это сделать? Просто использовать вложенные циклы вместо декораторов?
Подробнее здесь: https://stackoverflow.com/questions/792 ... m-function
Мобильная версия