Итак, я написал немного кода, который работает, но я не доволен стилем, так что вы можете помочь мне с этим. Функция Wrapper перебирает глобальную переменную и использует некоторые из этих данных в качестве аргументов, поэтому, когда я вызываю функцию, она имеет другой набор аргументов, чем когда она определена. Вот пример кода:
from functools import wraps
global elems
elems = [('a','b')]
def onEachInList(func):
@wraps(func)
def wrapper(*args, **kwargs):
results = [func(a, b, *args, **kwargs) for a, b in elems]
return 'done'
return wrapper
@onEachInList
def func_1(a, b, c):
print(f'{a}{b}{c}')
@onEachInList
def func_2(a, b):
print(f'{a}{b}')
Теперь, когда я использую функции, я просто вызываю
>>> func_1(c)
abc
'done'
>>> func_2()
ab
'done'
Это работает, но верно ли это? Если нет, то как мне написать это?