Mais si tu écris, x = 3 + "hello", ou si tu écris "x = 3" puis "x.toto" tu auras une erreur générée par le run-time etc... Le compilateur ne vérifie pas le type, parce que c'est du typage dynamique. Mais à l'exécution, le programme le vérifie et renvoie une erreur en cas d'incompatibilité.
Vraiment on ne parle pas le même langage
Ce n'est pas parce que c'est dynamique qu'on ne check pas le type. On peut avoir du dynamique qui check le type si on veut dans d'autres langages.
Regarde ca:
x=3+"foo"
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-ad174166c699> in <module>()
----> 1 x=3+"foo"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Python ne dit pas "types incompatibles" comme gcc le dirait sur du C. Il dit juste "int ne sait pas ajouter une str à lui même).
Encore une fois, je n'appelle pas ca une vérification du type mais une véfication du fait que les objets sache faire ce qu'on leur demande *le moment venu*. C'est important. C'est *le moment venu*. Dans les langages où on déclare les types, le compilo râle dès qu'on passe un type qui n'est pas celui déclaré dans le prototype. Je trouve ca assez peu souple finalement.
Prenons def sum(a,b). Soit tu déclares explicitement les types du genre (int a, int b) mais là tu as le pb de "et pour floats? et pour double?" Le problème est réglé en C par des cast implicites ce qui est relativement moche. En C++, si tu écrits int sum(Foo int, Foo int), c'est un peu dommage que ca ne marche pas si tu passes un 'a' ou un 'b' de type Bar (sans lien d'héritage avec Foo). La facon de régler ce problème en C++ est un système d'héritage complexe et, d'un autre point de vue (à la compilation), les templates. Tout ce machin complexe permet de faire ce qu'on VEUT en fait faire le plus souvent : écrire une fonction sum qui somme 'a' et 'b' du moment qu'ils savent le faire. C'est pour ca que j'aime bien le duck typing...mais oui c'est une question de gout.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.