Su ejemplo demuestra dinamización mecanografía, no mecanografía débil. La tipificación dinámica generalmente significa que el tipo de datos que un objeto puede almacenar es mutable; cualquier objetivo puede contener un enlace a cualquier tipo de objeto. Contraste eso con, por ejemplo, C#, que está tipado estáticamente [*].
int i = 5; // Okay.
i = "5"; // Illegal! i can only hold integers.
tipificación estricta significa que una vez le asigna un valor de un tipo particular, objetos obedecen a reglas estrictas acerca de cómo pueden interactuar con otros objetos de varios tipos. La mecanografía débil significa que tales reglas son más relajadas. Esto no significa que los lenguajes fuertemente tipados sean necesariamente superiores de ninguna manera; es solo una elección de diseño de lenguaje.
Python se considera fuertemente tipado porque los objetos tienen una noción distinta de lo que escriben que son. operaciones incompatibles entre objetos causan errores:
>>> 1 + 1 # Add two integers.
2
>>> "1" + "1" # Concatenate two strings.
'11'
>>> 1 + int("1") # Add two integers.
2
>>> "1" + str(1) # Concatenate two strings.
'11'
>>> 1 + "1" # Undefined! Adding integers and strings is meaningless.
Traceback (most recent call last):
File "", line 5, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Pero en PHP, las reglas son mucho más relajado de lo que es aceptable. Por lo tanto, se considera más débilmente tipado que en otros idiomas.
$x = 1 + "1"; // x is 2
[*] Técnicamente, a partir de C# 4, # C está estático de tipos, pero con exclusión de tipado dinámico en función de cada vinculante, gracias a la palabra clave dynamic
. Actualmente, muchos idiomas están agregando capacidades dinámicas y difuminando las líneas, por lo que cada vez es más difícil decir que "el lenguaje X es dinámico" y el "idioma Y es estático". Es mucho más una escala móvil o un espectro que una propiedad binaria.
Python es un lenguaje dinámico, por lo que está débilmente tipado en cierto sentido y fuertemente tipado en otros (no hay una sola definición), pero toda la pregunta es mucho más complicada que eso. Ver http://wiki.python.org/moin/StrongVsWeakTyping –
posible duplicado de [¿Alguien me puede decir qué tipo de mecanografía fuerte y de mecanografía débil significa y cuál es mejor?] (Http://stackoverflow.com/questions/323323/ puede-alguien-decirme-qué-fuerte-escribir-y-escribir-débil-significa-y-que-uno-es-ser), y también [es-mi-comprensión-de-tipo-sistemas-corregir] (http://stackoverflow.com/questions/2135066/is-my-understanding-of-type-systems-correct) – nawfal
Creo que esto no es una tontería, ya que es muy específico de Python. No es como si ya no pudiéramos hacer preguntas específicas sobre el lenguaje en el sistema de tipos porque se explicaron los tipos de letra fuertes y débiles en las respuestas a otras preguntas. Por un lado, incluso si se explicara allí, sería difícil de encontrar entre toda la otra información. –