Je me dis les lignes 1 et 5 (nouveau pour le débogage/programmation, je ne sais pas si cela aide)
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
Pourquoi ça me donne cette erreur?
Vous voulez passer la fonction objecthi
à votre fonction loop()
et non le résultat d'un call à hi()
(qui est None
car hi()
ne renvoie rien).
Alors essayez ceci:
>>> loop(hi, 5)
hi
hi
hi
hi
hi
Cela vous aidera peut-être à mieux comprendre:
>>> print hi()
hi
None
>>> print hi
<function hi at 0x0000000002422648>
Vous ne devez pas transmettre la fonction call hi () à la fonction loop (), cela donnera le résultat.
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
Pourquoi ça me donne cette erreur?
Parce que votre premier paramètre que vous passez à la fonction loop
est None mais que votre fonction attend un objet appelable, ce que None object n’est pas
Par conséquent, vous devez passer l'objet callable-object qui est dans votre cas l'objet de fonction 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)
J'ai rencontré l'erreur "TypeError: l'objet 'NoneType' n'est pas appelable" mais pour un problème différent . Avec les indices ci-dessus, j'ai pu déboguer et j'ai bien compris! __. J'avais écrit la bibliothèque custome et mon dossier ne le reconnaissait pas, même si je l'avais mentionné
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.