web-dev-qa-db-fra.com

L'objet Python NoneType n'est pas appelable (débutant)

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?

29
Seb

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>
47
Tim Pietzcker

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
2
M.J

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)
2
Nicoretti

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.
0
asha cr