Quelques-unes des principales différences entre Python et les langages C/Java sont :
-
Compréhensions de listes.
-
Support pour la programmation fonctionnelle.
-
L'utilisation de certains concepts Pythonic au lieu de concepts similaires à ceux de C, bien que les deux semblent fonctionner (les compréhensions de listes peuvent être considérées comme faisant partie de cela, mais il y en a d'autres).
Il y en a d'autres, mais ce sont les principales qui m'ont dérangé lorsque j'ai commencé Python (et je venais de Java comme vous).
Avant d'utiliser l'un de ces concepts, il est utile de comprendre pourquoi vous devriez privilégier un code pythonic plutôt que la manière habituelle en C/Java en Python, même si les deux vous donnent le même résultat.
Pour commencer, Python offre des fonctionnalités puissantes non disponibles en C/Java qui rendent votre code beaucoup plus clair et plus simple (bien que cela soit subjectif et peut ne pas sembler meilleur à première vue pour quelqu'un venant de Java). Les deux premiers points entrent dans cette catégorie. Par exemple, le support des fonctions en tant que premières classes d'objets et des fermetures facilitent la réalisation de tâches qui nécessiteraient toutes sortes d'acrobaties avec les classes internes en Java.
Mais une raison majeure est que Python est un langage interprété, et certains concepts sont beaucoup plus rapides que le code équivalent en C/Java. Par exemple, les compréhensions de listes sont généralement beaucoup plus rapides qu'une boucle for équivalente qui itère sur les indices d'une liste et accède à chaque élément par index. Il s'agit d'un avantage très objectif, et à mon avis, beaucoup de la pensée "Python est beaucoup trop lent" vient de l'utilisation de code de style Java adapté à Python.
Une des meilleures façons d'apprendre le code pythonic est de lire le code d'autres personnes. J'ai en fait beaucoup appris en regardant du code Python posté en réponse à des questions sur SO. Ces exemples sont souvent accompagnés d'explications et il est généralement évident pourquoi il est meilleur que du code non-pythonic (rapidité, clarté, etc.).
Éditer :
Évidemment, il existe d'autres moyens d'obtenir du code d'autres personnes. Vous pouvez également télécharger et examiner le code de tout bon projet Python open source. Les livres sont aussi une bonne ressource, je recommanderais le O'Reilly Python Cookbook. Il contient de nombreux exemples de code utiles et des explications très détaillées.
4 votes
Je dirais que vous devez vous donner du temps. Ça ne se produira pas du jour au lendemain ou en suivant simplement les étapes à la lettre. Au fur et à mesure que vous programmez différents aspects, cherchez des alternatives et vous y arriverez.
3 votes
+1 seul pour l'effort de faire cela. J'ai connu un collègue qui a programmé en Smalltalk toute sa vie. Il a fait quelques choses vraiment horribles avec la réflexion en Java que j'aimerais oublier que j'ai jamais vues...
5 votes
Alors que vous êtes encore frais, je vous suggère d'essayer Ruby. Je l'ai trouvé comme un énorme souffle d'air frais après avoir été dans une pièce remplie de fumée (représentée par Java). Sérieusement cependant, je crois que chaque bon développeur devrait connaître au moins un langage "statique" et un langage "dynamique". Cela donne une bien meilleure perspective sur tout ce que vous faites.
0 votes
Dimitko - c'est ainsi que je me sens lorsque j'ai l'occasion occasionnelle d'écrire du perl :)
0 votes
Mon cas était l'inverse du vôtre. J'ai commencé avec Python et j'ai réussi à le comprendre clairement et à me sentir à l'aise avec, mais lorsque je suis passé à Java pour la première fois, eh bien, j'ai réussi à comprendre les concepts de base mais lorsque j'ai écrit quelques codes Java seul, ma base de code était mauvaise donc j'ai abandonné. Ensuite, j'ai donné une deuxième chance à Java mais cette fois j'ai eu la chance de rejoindre une équipe où la base de code m'a aidé à suivre les mêmes procédures... donc je lis des codes, comprends et implémente mes tâches... finalement je suis bien immergé dans l'écosystème Java. Alors apprenez en lisant des bases de code.