@atsin4469

Как переписать функцию, чтобы заработала?

Задание
Вам предстоит реализовать функцию call_twice, которая должна
принять функцию и произвольный набор аргументов для неё,
вызвать функцию с заданными аргументами дважды,
вернуть пару из результатов вызовов (первый, затем второй).

Пример использования:
>>> call_twice(input, 'Enter value: ')
Enter value: foo
Enter value: bar
('foo', 'bar')
>>>


Мое решение
def call_twice(f, *args, **kwargs):
    first_f = f(args, kwargs)
    second_f = f(args, kwargs)
    return first_f, second_f


Тест
def push_and_count(target, *, value):
    target.append(target)
    return len(target)


def shoot():
    return 'Bang!'


def test_call_twice():
    assert call_twice(push_and_count, [], value=42) == (1, 2), (
        "Function should be called twice with same arguments!"
    )
    assert call_twice(shoot) == ('Bang!', 'Bang!')


Не только тест не проходит, но и выдает ошибку
TypeError: push_and_count() takes 1 positional argument but 2 were given
но я не знаю как это исправить. Предполагаю, что вложенные функции нужны, но без понятия, как их тут реализовать.

Как переписать функцию?
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
mallo_c
@mallo_c
Зачем я изучил VBS???
def call_twice(f,*args,**kwargs):
    first_f=f(*args,**kwargs)
    second_f=f(*args,**kwargs)
    return first_f, second_f
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы