Python es de tipado dinámico y fuerte
Python efectivamente es fuertemente tipado y dinámico a la vez, para ello vamos a analizarlo por partes:
Tipado dinámico
Un lenguaje de programación usa un tipado dinámico cuando la comprobación de tipificación (typing) se realiza durante su ejecución y no en su compilación. 1
>>> numero = 1
>>> print(numero)
1
>>> numero = "uno"
>>> print(numero)
uno
Debido a ser de tipado dinámico, numero
puede tener diferentes tipos en
diferentes tiempos de ejecución: primero es un entero (int
) y luego una cadena de
texto (str
). Esto permite mayor flexibilidad a costa de rendimiento por cierto.
Tipado fuerte
Un lenguaje de programación es fuertemente tipado si no se permiten violaciones de los tipos de datos, es decir, dado el valor de una variable de un tipo concreto, no se puede usar como si fuera de otro tipo distinto a menos que se haga una conversión. 2
>>> x = 1
>>> y = "2"
>>> print(x + y)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print(x+y)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Compruébalo tu mismo, ejecuta primero (arrojará un TypeError) y luego modifícalo:
Debido a ser fuertemente tipado, los tipos deben ser compatibles para realizar ciertas operaciones como por ejemplo la adicción (o concatenación).
Concatenando (str
+ str
):
>>> x = 1
>>> y = "2"
>>> x = str(x)
>>> print(x + y)
'12'
Adicionando (int
+ int
):
>>> x = 1
>>> y = "2"
>>> y = int(y)
>>> print(x + y)
3
Lenguajes de programación de tipado débil como JavaScript realizan una conversión de datos internamente (coerción) que resultan poco intuitivas y pueden convertirse en una fuente de errores:
console.log(1 + 1 + 1); // Output: 3
console.log(1 + 1 + "1"); // Output: "21"
console.log("1" + 1 + 1); // Output: "111"