def foo(a): print("I'm foo") return False if foo: print("OK") else: print("KO")
Lo ejecuto y vuelve OK. Lo sé, debería haber escrito if foo():
A menudo olvido el paréntesis al llamar a funciones sin parámetros y necesito una explicación sobre el resultado.
¡Gracias de antemano por sus respuestas!
Cuando escribes
if foo: print("OK") else: print("KO")
Realmente estás probando si la función puntero foo
. Está definido, por lo que imprime “OK” y no llama a la función. Con el paréntesis, llamas a la función foo
y ejecuta su código.
python if
condición se muestra si el valor no es igual a ninguno de estos
0, None, "", [], {}, False, ()
aquí
def foo(a): print("I'm foo") return False >>>foo
Eso significa que la variable foo
apunta a la función. Si llama a su función foo(arg)
entonces devolverá False
como esperaba.
>>>foo("arg") False
En este caso su código es el mismo que
if foo != None: print("OK") else: print("KO")
El resultado es
“DE ACUERDO”
porque foo
realmente existe.