我告诉我第1行和第5行(新的调试/编程,不确定是否有帮助)
def hi():
print 'hi'
def loop(f, n): #f repeats n times
if n<=0:
return
else:
f()
loop(f, n-1)
loop(hi(), 5)
hi
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)
为什么它会给我这个错误?
Tim*_*ker 54
你想给函数传递对象 hi到你的loop()功能,而不是结果调用来hi()(这是None因为hi()不返回任何东西).
试试这个:
>>> loop(hi, 5)
hi
hi
hi
hi
hi
Run Code Online (Sandbox Code Playgroud)
也许这会帮助你更好地理解:
>>> print hi()
hi
None
>>> print hi
<function hi at 0x0000000002422648>
Run Code Online (Sandbox Code Playgroud)
为什么它会给我这个错误?
因为传递给loop函数的第一个参数是None,但函数需要一个可调用对象,而None对象不是。
因此,您必须传递可调用对象,在您的情况下是hi函数对象。
def hi():
print 'hi'
def loop(f, n): #f repeats n times
if n<=0:
return
else:
f()
loop(f, n-1)
loop(hi, 5)
Run Code Online (Sandbox Code Playgroud)