
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Fuente: Wikipedia
Autor: skeeze
Si has programado en el lenguaje Python o al menos escuchado de él, probablemente sepas que se trata de un lenguaje de tipado dinámico, es decir, una variable puede comenzar siendo un número entero, pasar a ser una cadena de texto y terminar siendo chocolate sin ningún problema. Esta característica ha generado que muchas personas lo amen mientras que otros programadores lo odien.
var = 5
type(var) # <class 'int'>
var = 'hola'
type(var) # <class 'str'>
var = Chocolate()
type(var) # <class '__main__.Chocolate'>
Si bien esta característica puede considerarse una ventaja en muchas ocasiones, y es muy común el los lenguajes interpretados, puede generar confusión en algunas ocasiones, dificultando la legibilidad y depuración de un programa. Lo que muchos no saben es que es posible incorporar al código Python algunas ventajas propias de los lenguajes estáticamente tipados. Haciendo uso de la sintaxis de anotación de funciones de Python3 (PEP 484) o de anotaciones basadas en comentarios en Python2 puede especificarse el tipo de datos esperado.
def saludar(name: str) -> str:
return "Hello, {}".format(name)
Esto ya puede suponer una mejora en la expresividad del código, si embargo, si utilizamos el static type checker conocido como Mypy, es posible detectar errores en tiempo de compilación. Mypy funciona como un linter, indicando errores generados por inconsistencia en los tipos de datos.
def saludar(name: str) -> str:
return "Hello, {}".format(name)
saludar(4) # error: Argument 1 to "saludar" has incompatible type "int"; expected "str"
Usando Mypy
Para usar Mypy, en primer lugar, debemos instalarlo; si estás familiarizado con los paquetes de Python no debería generarte mayor sorpresa, es tan sencillo como escribir en la terminal/linea de comandos:
pip install mypy # Para python2 o si solo tienes una versión de python agregada al path
pip3 install mypy # Para python3
Una vez descargado puedes utilizarlo escribiendo en la linea de comandos:
mypy nombre_del_archivo.py
python3 -m mypy nombre_del_archivo.py # Otra opción
Tipos de datos comunes
Ahora que sabemos lo fácil que es utilizar Mypy exploremos un poco los tipos de datos que podemos emplear:
Tipo | Descripción |
---|---|
int | Entero de tamaño arbitrario |
Float | Número de punto flotante |
bool | Booleano |
str | Cadena de texto unicode |
bytes | Cadena de 8-bit |
object | Un objeto arbitrario |
List[str] | Lista de objetos de tipo str |
Tuple[int, int] | Una tupla de dos objetos de tipo int |
Tuple[int, ...] | Una tupla de una cantidad arbitraria de objetos de tipo int |
Dict[str, int] | Un diccionario con str como claves y int como valores |
Iterable[int] | Un objeto iterable que retorna enteros (int) |
Sequence[bool] | Una secuencia de valores booleanos |
Any | Un tipo de asignación dinámica |
Callable | Un objeto invocable (funciones, por ejemplo) |
Fuente: Documentación de Mypy
Es importante aclarar que los tipos List, Tuple, Dict, Iterable, Sequence, Any y Callable deben ser importados del paquete Typing antes de poder usarlos, esto se realiza de la manera convencional, from typing import List
. Bueno, con esto tienen suficiente para comenzar a explorar las posibilidades que ofrece Mypy, para más información los invito a visitar la Wiki de Mypy.
En lo personal sólo recomiendo utilizar Mypy para proyectos medianos o grandes, porque facilita la escalabilidad y la refactorización de código. En otro caso, me parece que se pierde la sencillez y elegancia que caracteriza al código Python. Sin embargo, es sólo otra herramienta y cualquiera puede decidir si incorporarla o no a su flujo de trabajo, de hecho, permite la convivencia de código de tipado estático y dinámico en el mismo proyecto, así que no es complicado migrar de forma progresiva de uno a otro. Espero que esta información les sea de utilidad. Hasta la próxima.
Aunque yo no se programar en phyton me parecio interesante entender algunas de sus virtudes o defectos en sintaxis con relación a los demas lenguajes de programación
Me alegra que te resultara interesante. Los lenguajes de programación son herramientas, siempre tenemos favoritos, pero algunos son mejores para un trabajo que para otro. Aunque nos gusten los martillos no podemos arreglar todo a martillazos.
Congratulations @orlmicron! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP