validate - El objeto NoneType de Python no es invocable(principiante)
python null variable (3)
¿Por qué me da ese error?
Debido a que su primer parámetro que pasa a la función de loop
es None pero su función está esperando un objeto que se puede llamar, y el objeto None no.
Por lo tanto, debe pasar el objeto callable que es, en su caso, el objeto de función 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)
Me dice la línea 1 y la línea 5 (nuevo en la depuración / programación, no estoy seguro de si eso ayuda)
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
¿Por qué me da ese error?
Desea pasar el objeto de función hi
a su función loop()
, no el resultado de una llamada a hi()
(que es None
porque hi()
no devuelve nada).
Así que prueba esto:
>>> loop(hi, 5)
hi
hi
hi
hi
hi
Quizás esto te ayude a entender mejor:
>>> print hi()
hi
None
>>> print hi
<function hi at 0x0000000002422648>
No debe pasar la función de llamada hi () a la función loop (). Esto dará el resultado.
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