Я изучаю Python, и я читаю «Think Python» и делаю несколько простых упражнений, включенных в книгу.Функция в Python дает сообщение об ошибке
Меня спрашивают: «Определите новую функцию, называемую do_four, которая принимает объект функции и значение и вызывает функцию четыре раза, передавая значение в качестве параметра».
Я пытаюсь создать эту функцию с помощью одного оператора, вызвав функцию, уже определенную как do_twice(), и протестировать ее с помощью функции print_double(). Вот код:
def do_twice(f, x):
f(x)
f(x)
def do_four(f, v):
do_twice(do_twice(f, v), v)
def print_twice(s):
print s
print s
s = 'abc'
do_four(print_twice, s)
Этот код выдает ошибку:
abc
abc
abc
abc
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-41-95b513e5e0ee> in <module>()
----> 1 do_four(print_twice, s)
<ipython-input-40-100f8587f50a> in do_four(f, v)
1 def do_four(f, v):
----> 2 do_twice(do_twice(f, v), v)
<ipython-input-38-7143620502ce> in do_twice(f, x)
1 def do_twice(f, x):
----> 2 f(x)
3 f(x)
TypeError: 'NoneType' object is not callable
Пытаясь понять, что происходит, я пытался построить диаграмму стека, как описано в книге. Вот оно:
Не могли бы вы объяснить, сообщение об ошибке и комментарий на Stack диаграмме?
Ваш совет будет оценен по достоинству.