PROGRAMACIÓN EN PITÓN
En los lenguajes de programación, los objetos invocables suelen estar asociados con funciones, y por una buena razón. Las funciones son quizás los mejores ejemplos de objetos invocables, pero no son los únicos. En Python, hay muchos otros tipos invocables, que pueden resultar increíblemente útiles y potentes. También puedes crear tus propios objetos invocables. Este artículo trata sobre ambos.
un invocable es un objeto que se puede llamar usando un par de paréntesis, como por ejemplo a continuación, donde usamos la función incorporada sum():
>>> sum([1, 1, 1])
3
Una llamada a un invocable, dependiendo de su definición, puede ser
- sin ningún argumento, como en
no_args_callable() - o una serie de argumentos posicionales y/o de palabras clave, como en
args_callable(arg1, arg2),args_callable(arg1, arg2=value2)oargs_callable(arg1=value1, arg2=value2)
Arriba, describí un invocable como un sustantivo. La palabra invocablesin embargo, también se usa como adjetivo, es decir siendo un invocable. Por lo tanto, un objeto invocable es lo mismo que un objeto invocable.
Python tiene una función incorporada, callable(), que comprueba si un objeto es invocable o, en otras palabras, si es invocable. Considere los siguientes ejemplos de invocables reales:
>>> callable(lambda x: x + 1)
True
>>> callable(print)
True
>>> def foo(): ...
>>> callable(foo)
True
Los siguientes objetos no son invocables:
>>> callable(None)
False
>>> callable(10)
False
>>> callable("hello")
False
Los ejemplos positivos anteriores se referían a funciones, que es lo que la mayoría de la gente asocia con los invocables. Sin embargo, de hecho, todas las clases de Python se pueden llamar. Si conoce los conceptos básicos de la programación orientada a objetos en Python, sabrá que para crear una instancia de una clase, debe hacer lo siguiente:¹
>>> class Empty: ...
Esto se parece exactamente a una llamada, y lo es, y es por eso que las clases de Python son invocables.
Este código muestra que el Empty La clase es invocable, pero la verdad es que todas las clases de Python son invocables. Sin embargo, en Python…