Python es un lenguaje tipado dinámicamente y las sugerencias de tipo no son obligatorias. El intérprete de Python identifica automáticamente los tipos de objetos durante la ejecución del código y también permite que los objetos cambien dinámicamente sus tipos durante la vida útil. Sin embargo, se introdujeron sugerencias de tipo opcional en Python 3.5, permitiendo que los programadores usen sugerencias de tipo si lo desean.
Tenga en cuenta que, a diferencia de otros lenguajes de programación, el intérprete de Python en sí no hace cumplir con sugerencias de tipo opcional, ya que los considera solo sugerencias. Tendrá que usar módulos de terceros o complementos de editor de texto para imponer una verificación de tipo estricto en Python.
¿Por qué usar tipos de pistas??
Tipo de sugerencias explícitamente tipos de objetos y reducen la ambigüedad del código. Hacen que sea mucho más fácil inferir la lógica detrás de las declaraciones de código, especialmente cuando varios miembros de un equipo están trabajando en la misma base de código. También son útiles cuando se accede a las bases de código después de intervalos largos, ya que los sugerencias de tipo hacen que sea más fácil inferir la lógica subyacente. El tipo de sugerencias puede hacer que sea mucho más fácil depurar código cuando ocurren problemas y bloqueos. Sin embargo, aumentan la verbosidad en el código y a algunos desarrolladores no les gusta, ya que afecta la sintaxis estándar de Python, que es mucho más limpia. El uso de sugerencias de tipo en los programas de Python también puede ser una elección personal basada en el estilo de codificación y los patrones. Como se indicó anteriormente, incluso cuando se usa sugerencias de tipo, el intérprete de Python no las hace cumplir y es posible que tenga que instalar un módulo de terceros para habilitar la verificación de tipo estricto.
Sintaxis básica y uso
El siguiente ejemplo muestra los tipos de tipos utilizados para un objeto de tipo "INT" en Python:
Def Square (número: int) -> int:La primera declaración define una función llamada "cuadrado". Se necesita un argumento obligatorio llamado "número" y calcula su cuadrado. El tipo de sugerencia para el argumento numérico se define como "int" usando el símbolo ":" (colon) mientras que el tipo de pista de retorno se define nuevamente como "int" usando un símbolo "->" (flecha).
Sin sugerencias de tipo, la misma función se definiría de la siguiente manera:
Def cuadrado (número):Obtendrá la siguiente salida después de ejecutar las dos muestras de código establecidas anteriormente:
25Si solo desea asignar un tipo de sugerencia a una variable durante su declaración, use la siguiente sintaxis:
var1: str = "cadena"Puede asignar sugerencias de tipo a variables antes de "=" Signo igual. Como se explicó anteriormente, los nombres de objetos y los tipos de sugerencias deben separarse por un símbolo ":" (colon).
El intérprete de Python no aplica sugerencias de tipo. Entonces, si cambia el tipo de objetos a cualquier otro tipo aleatorio disponible en Python, obtendrá el mismo resultado siempre que la lógica misma no arroje un error. Aquí está la muestra de código:
Def cuadrado (número: flotante) -> str:Aquí, el argumento numérico es de tipo "flotante". La función "cuadrada" ahora devuelve un objeto de tipo "str". Sin embargo, ambos tipos no se aplican y obtendrá "25" como salida y el valor devuelto será de tipo "int". Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:
25Usando alias de tipo
Para definir sugerencias de tipo para objetos complejos que contienen múltiples tipos o tipos de objetos personalizados, puede usar alias de tipo. La siguiente muestra de código muestra el uso de alias de tipo:
IntegerList = list [int]En la primera declaración, un nuevo alias de tipo llamado "IntegerList" se define asignándole un tipo. La definición de tipo puede ser simple o compleja que contiene múltiples tipos. A continuación, este tipo de alias se usa en la función cuadrada y se asigna al argumento principal y al valor de retorno. La función cuadrada ahora devuelve el cuadrado de cada número en una lista. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:
[25, 36, 49]Usando "cualquier" toque de tipo
El tipo "cualquier" se puede usar para anotar variables, argumentos y tipos de devolución con cualquier tipo de pista. Los objetos con "cualquier" toque de tipo pueden ser una cadena, un entero, un flotador o cualquier otro tipo válido en Python. Aquí hay un ejemplo:
de escribir importación cualquieraLa primera declaración importa "cualquier" tipo "del módulo" Typing ". El módulo de tipificación proporciona soporte para tipos de sugerencias en los programas de Python y debe importar ciertos tipos para usarlos. A continuación, en lugar de usar Str, Int, Float o cualquier otro tipo de tipo de tipo, se usa "cualquier cosa" para indicar que la variable puede ser de cualquier tipo durante su vida útil. Tenga en cuenta que los tipos de sugerencias aún no se aplican en Python sin usar ninguna biblioteca de terceros.
Uso de un módulo de terceros para verificar sugerencias de tipo
Mypy es uno de los módulos de verificación de tipo más utilizados disponibles para Python. Puede usarlo para encontrar errores relacionados con la pista de tipo en sus programas de Python. Puede instalarlo en Ubuntu y otras distribuciones de Linux desde el Manager de paquetes PIP. Para hacerlo, ejecute uno de estos comandos:
$ Pip Install Mypy
$ PIP3 Instalar mypy
Una vez que se haya instalado MYPY en su sistema Linux, puede verificar los problemas de verificación de tipo estricto en un programa de Python ejecutando un comando en el siguiente formato:
$ mypy programa.py
Tenga en cuenta que Mypy es solo una herramienta para verificar la verificación estricta. Ejecutará un informe en su programa Python y le mostrará errores de comprobación de tipo. Sin embargo, aún podrá ejecutar programas de Python normalmente (con o sin tipos de pistas) y no se lanzarán errores relacionados con la pista de tipo durante la ejecución. Considere la siguiente muestra de código:
Def Square (número: int) -> int:Esta muestra de código es idéntica a uno de los ejemplos explicados anteriormente. Suponiendo que reside en un "principal.PY ", puede verificar sugerencias de tipo usando mypy ejecutando el siguiente comando:
$ mypy main.py
Después de ejecutar el comando anterior, debe obtener la siguiente salida:
Éxito: no se encuentran problemas en 1 archivo fuenteSi suministra un objeto de tipo flotante a la llamada de función cuadrada en el mismo ejemplo anterior, MyPy lanzará un error.
Def Square (número: int) -> int:Ahora, cuando ejecuta el archivo usando "Mypy Main.comando py ", obtendrá un error similar a este:
principal.Py: 26: Error: Argumento 1 al "cuadrado" tiene un tipo incompatible "flotante"; esperado "int"Este es solo un informe de error que le mostrará los errores de sugerencia. Si ejecuta ambas muestras de código mencionadas anteriormente sin mypy, obtendrá la siguiente salida:
25Esto cubre el uso más básico y común de la sintaxis de sugerencias de tipo en Python. Para obtener más información sobre los tipos de sugerencias, el uso avanzado y los tipos personalizados, consulte la documentación oficial de Python disponible aquí.
Conclusión
Los sugerencias de tipo en Python proporcionan una forma sistemática de adjuntar indicadores de tipo a variables, funciones y clases. Si bien Python en sí no hace cumplir sugerencias de tipo, puede usar módulos de terceros para verificar sugerencias de tipo y usarlas como una forma básica de pruebas para afirmar el comportamiento previsto de los objetos de Python en su programa. La forma en que el lenguaje de programación de Python está diseñado y su filosofía central, la verificación de tipo estricto para los tipos de sugerencias, es posible que nunca se implementen en la biblioteca estándar de Python.