Как проверить эту функцию в Python ... TypeError: объект не вызывается - PullRequest
0 голосов
/ 07 февраля 2019

Невозможно проверить функцию slowest_call с 3 аргументами.

Это одно из моих учебных упражнений.Сначала я определил функцию time_call, затем я пытаюсь использовать ее как вход для другой функции, slowest_call.

Возможно, мои входные данные не совсем верны (что я могу указать как 4-й вход?!).Не уверен, что еще попробовать.

from time import sleep
from time import time
t = time()
sleep(duration)


 """Return the amount of time the given function takes (in seconds) when called with the given argument """

def time_call(fn, arg):
    t0 = time()
    fn(arg)
    t1 = time()
    elapsed = t1 - t0
    return elapsed
time_call(sleep, 4)  # testing it, it works

 """"Return the amount of time taken by the slowest of the following function
    calls: fn(arg1), fn(arg2), fn(arg3) """

def slowest_call(fn, arg1, arg2, arg3):
return max(time_call(fn, arg1), time_call(fn, arg2), time_call(fn, arg3))

Я проверяю это так

slowest_call(time_call(sleep,5), time_call(sleep,3), time_call(sleep,2))

TypeError: slowest_call() missing 1 required positional argument: 'arg3'

Это дает мне ошибку, в то время как это должно генерировать самое длинное время в качестве ответа (5...).

1 Ответ

0 голосов
/ 07 февраля 2019

Но это совсем не то, как ваша функция slowest_call ожидает вызова.Он хочет саму вызываемую функцию, а затем три аргумента для ее вызова.И он позаботится о том, чтобы позвонить вам time_call.Итак:

slowest_call(sleep, 5, 3, 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...