t.me/atinfo_chat Telegram группа по автоматизации тестирования

python - выполнение функции n раз с разными аргументами в к-ве n штук

Всем привет!
Вопрос собственно, наверное, элементарный, но времени на разбираться нету.
Прошу совета в задаче - есть список аргументов, который нужно будет дополнять, есть функция - необходимо поочередно брать из списка новый аргумент и выполнять с ним функцию, столько раз, сколько есть аргументов в списке. Нужен оптимально короткий и понятный код.
Прошу помощи.

Хм… Не совсем понял.
def func1():
List myList
for (i in list):
func2 (i)

def func2(i):
doSmthWithI

my_args = [1, 2]


def execute_with_args(arg_list):
    def wrapper(target_func):
        def inner():
            for arg in arg_list:
                target_func(arg)
        return inner
    return wrapper


@execute_with_args(my_args)
def my_func(arg):
    print('>>>>', arg)


my_func()
print('---------')
my_args.extend([3, 4])

my_func()
>>>> 1
>>>> 2
---------
>>>> 1
>>>> 2
>>>> 3
>>>> 4

Спасибо

Большое спасибо, вы снова мне помогли :slight_smile:

А позвольте спросить, что делает вот этот блок:
def execute_with_args(arg_list):
def wrapper(target_func):
def inner():
for arg in arg_list:
target_func(arg)
return inner
return wrapper

Не хватает ума проследить что именно он выполняет, если не сложно.
Я просто додумался как написать то что меня устраивает, примитивным и понятным мне языком, но ваша часть выглядит лучше, хотя я до конца ее и не понимаю.
Мой пример:
urls = [‘link1’, ‘link2’, ‘link3’]
for check in urls:
def test1(check):
x = 2 + 7
y = str(x)+check
test1(check)

Это декоратор, функция, которая оборачивает другую функцию
Подробнее: https://python-3-patterns-idioms-test.readthedocs.io/en/latest/PythonDecorators.html
Ваш вариант тоже “почти ок”, если подобную операцию необходимо выполнять только один раз, правильнее конечно же определять функцию вне цикла:

urls = [‘link1’, ‘link2’, ‘link3’]
def test1(check):
    x = 2 + 7
    y = str(x)+check
for check in urls:
    test1(check)

Крайне благодарен, спасибо за ваш труд!