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
なぜそのエラーが発生するのですか?
call to loop()
の結果ではなく、関数objecthi
をhi()
関数に渡したい(hi()
は何も返さないため、None
です)。
だからこれを試してください:
>>> loop(hi, 5)
hi
hi
hi
hi
hi
おそらくこれはあなたがよりよく理解するのに役立つでしょう:
>>> print hi()
hi
None
>>> print hi
<function hi at 0x0000000002422648>
呼び出し関数hi()をloop()関数に渡さないでください。これにより結果が得られます。
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) # Do not use hi() function inside loop() function
「TypeError: 'NoneType' object is callable」というエラーに直面しましたが、別の問題がありました。上記の手がかりを使って、デバッグできて正しくできました!私が直面した問題は次のとおりでした:私はそれについて言及しましたが、私はカスタムライブラリを書かれていて、私のファイルはそれを認識していませんでした
example:
Library ../../../libraries/customlibraries/ExtendedWaitKeywords.py
the keywords from my custom library were recognized and that error was resolved only after specifying the complete path, as it was not getting the callable function.