Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 17, 2016 13:02:21

error654
Зарегистрирован: 2016-07-30
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: 'list' object is not callable

Добрый день! Уже голову всю поломал, как исправить ошибку TypeError: “'list' object is not caрlable” из учебника Лутца?

 #mytimer.py
import time
resp = 1000
resp_list = range(resp)
def timer(func, *pargs, **kargs):
    start = time.clock()
    for i in resp_list:
        ret = func(*pargs, **kargs)
    elapsed = time.clock() - start
    return elapsed, ret
#timeseqs.py
import sys
import mytimer
resp = 10000
resp_list = range(resp)
def for_loop():
    res = []
    for x in resp_list:
        res.append(abs(x))
    return res
def list_comp():
    return [abs(x) for x in resp_list]
def map_call():
    return list(map(abs, resp_list))
def gen_expr():
    return list(abs(x) for x in resp_list)
def gen_func():
    def gen():
        for x in resp_list:
            yield abs(x)
    return list(gen())
print(sys.version)
for test in (for_loop(), list_comp(), map_call(), gen_expr(), gen_func()):
    elapsed, result = mytimer.timer(test)
    print('-' * 33)
    print('%-9s: %.5f => [%s...%s]' %
          (test.__name__, elapsed, result[0], result[-1]))

3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)

Traceback (most recent call last):
File “/Users/ergo/Development/PycharmProjects/Lutc/timeseqs.py”, line 35, in <module>
elapsed, result = mytimer.timer(test)
File “/Users/ergo/Development/PycharmProjects/Lutc/mytimer.py”, line 10, in timer
ret = func(*pargs, **kargs)
TypeError: ‘list’ object is not callable

Process finished with exit code 1

Офлайн

#2 Сен. 17, 2016 13:27:23

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

TypeError: 'list' object is not callable

В строке

 test in (for_loop(), list_comp(), map_call(), gen_expr(), gen_func())
надо передавать функции, а не результат их вызова (они возвращают список), получается, что функция timer пытается вызвать список, а должна вызывать функцию.
Надо
 test in (for_loop, list_comp, map_call, gen_expr, gen_func):

Отредактировано Stright (Сен. 17, 2016 13:31:23)

Офлайн

#3 Сен. 17, 2016 13:34:01

error654
Зарегистрирован: 2016-07-30
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: 'list' object is not callable

ТОчно!! спасибо большое

Stright
В строке

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version