659 votes

Python progression de chemin - d'apprenti à guru

J'ai été apprendre, de travailler et de jouer avec Python pour un an et demi maintenant. En tant que biologiste lentement faisant le tour de la bio-informatique, cette langue a été au cœur de toutes les principales contributions que j'ai faites dans le laboratoire. J'ai plus ou moins tombé en amour avec la façon Python me permet d'exprimer la plus belle des solutions et aussi avec la sémantique de la langue, qui permet par exemple d'un flux naturel de la réflexion à l'réalisable code.

Ce que je voudrais savoir, c'est votre réponse à une question que j'ai rarement vu dans ce ou d'autres forums. Cette question semble central pour moi, pour n'importe qui sur le chemin de Python amélioration, mais qui se demande ce que ses prochaines étapes.

Permettez-moi de résumer ce que je ne veux PAS demander d'abord ;)

  • Je ne veux pas le savoir RAPIDEMENT comment apprendre le langage Python
  • Je ne veux trouver la meilleure façon de se familiariser avec la langue
  • Enfin, je ne veux pas savoir un truc qui fait tout".

Ce que je veux savoir votre avis à propos, c'est:

Quelles sont les étapes que VOUS recommanderiez à un Python de compagnon, d'apprentissage de la statut de gourou (n'hésitez pas à arrêter où votre expertise en la dicte), afin que l'on s'AMÉLIORE CONSTAMMENT, de devenir de mieux en mieux Python codeur, une étape à la fois. Quelques-uns du peuple, de SORTE semblent presque digne d'adoration pour leur Python prouesses, merci de nous éclairer :)

Le genre de réponses que je voudrais profiter de l' (mais n'hésitez pas à surprendre le lectorat :P ), est mis en forme plus ou moins comme ceci:

  • Lire cette (ex: un tutoriel python), faites attention à ce genre de détails
  • Code pour si manytime/problèmes/lignes de code
  • Alors, lisez ceci (par exemple: tel ou tel ouvrage), mais cette fois, faites attention à ce
  • Affronter quelques problèmes de la vie
  • Ensuite, procédez à la lecture Y.
  • Assurez-vous de saisir ces concepts
  • Code pour X temps
  • Revenir à telles et telles bases ou de se déplacer plus loin...
  • (vous obtenez le point :)

Je me préoccupe vraiment, savoir votre opinion sur ce que l'on doit prêter attention, à divers stades, afin de progresser en PERMANENCE (à cause des efforts, bien sûr). Si vous venez d'un champ d'expertise spécifique, discuter de la voie à vous voir comme appropriés dans ce domaine.

EDIT: Merci de votre grande entrée, je suis de retour sur le Python amélioration de la piste! J'apprécie vraiment!

471voto

wheaties Points 20917

Je pensais que le processus de Python maîtrise disait quelque chose comme:

  1. Découvrir les interprétations de la liste
  2. Découvrez les générateurs
  3. Incorporer la carte, de réduire, de filtre, iter, la plage, le xrange souvent dans votre code
  4. Découvrez Les Décorateurs
  5. Écrire des fonctions récursives, beaucoup
  6. Découvrez itertools et functools
  7. Lire Real World Haskell (lire en ligne gratuit)
  8. Réécriture de tous vos vieux code Python avec des tonnes de fonctions supérieures, la récursivité, et autres joyeusetés.
  9. Ennuyer votre cabine matelot, chaque fois qu'ils vous présenter avec un Python de classe. Prétendent qu'il pourrait être "mieux" mis en œuvre comme un dictionnaire de plus certaines fonctions. Embrasser la programmation fonctionnelle.
  10. Redécouvrir la Stratégie de modèle et puis toutes ces choses de code impératif vous essayé tellement dur d'oublier après Haskell.
  11. Trouver un équilibre.

108voto

dkamins Points 10565

Un bon moyen pour poursuivre votre Python connaissance est de creuser dans le code source des bibliothèques, des plateformes et des cadres que vous utilisez déjà.

Par exemple, si vous êtes à la construction d'un site sur Django, de nombreuses questions qui pourraient vous butez peut être répondu en regardant comment Django implémente la fonctionnalité en question.

De cette façon, vous allez continuer à chercher de nouveaux idiomes, de codage, de styles et de Python astuces. (Certains vont être bonnes et d'autres mauvaises.)

Et quand vous voyez quelque chose Pythony que vous ne comprenez pas dans la source, un saut à l' #python canal IRC et vous trouverez beaucoup de "langue d'avocats sont heureux de vous expliquer.

Une accumulation de ces petites précisions au fil des ans conduit à une compréhension beaucoup plus profonde de la langue et de l'ensemble de ses tenants et les aboutissants.

92voto

wescpy Points 2127

Comprendre (de plus en plus profondément) Python les types de données et leurs rôles en ce qui concerne la mémoire de mgmt

Comme certains d'entre vous dans la communauté sont conscients, j'enseigne Python cours, les plus populaires étant le complet Intro+cours Intermédiaire, ainsi que d'une "avancée", qui introduit une variété de zones de développement de l'application.

Assez souvent, je me pose une question assez similaire à, "Devrais-je prendre votre intro ou un cours de niveau avancé? J'ai déjà fait de la programmation en Python pour les 1-2 ans, et je pense que l'intro est trop simple pour moi, donc j'aimerais passer directement à l'avancée... qui pourrait vous recommander?"

Pour répondre à leur question, je sonde pour voir comment forte ils sont dans ce domaine-pas que c'est vraiment la meilleure façon de mesurer si elles sont prêtes pour n'importe quel cours de niveau avancé, mais de voir comment leur connaissance de base de Python objets et de la mémoire de modèle, qui est une cause de beaucoup de Python bugs écrit par ceux qui ne sont pas seulement les débutants, mais ceux qui sont allés au-delà.

Pour ce faire, j'point à cette simple 2-partie question quiz: Ex1: x=42; y=x; x+=1; print x,y Ex2: x=[1,2,3];y=x;x[0]=4;print x,y

De nombreuses fois, ils sont en mesure d'obtenir à la sortie, mais le pourquoi est plus difficile et beaucoup plus important d'une réponse... je voudrais peser la sortie de 20% de la réponse, tandis que le "pourquoi" obtient 80% du crédit. S'ils ne peuvent pas obtenir le pourquoi, quelle que soit la façon Python expérience qu'ils ont, je serai toujours de diriger les gens à l'ensemble des intro+cours intermédiaire, parce que je passe une conférence sur les objets et la gestion de la mémoire à l'endroit où vous devriez être en mesure de répondre avec la sortie et le pourquoi avec suffisamment de confiance. (Juste parce que vous savez Python syntaxe après 1-2 ans ne vous fait pas prêts à se déplacer au-delà d'un "débutant" étiquette jusqu'à ce que vous avez une bien meilleure compréhension en ce qui concerne la façon Python fonctionne sous les couvertures.)

Une réussite enquête nécessitant une semblable réponse est encore plus difficile, par exemple,

Exemple 3

x = ['foo', [1,2,3], 10.4]
y = list(x) # or x[:]
y[0] = 'fooooooo'
y[1][0] = 4
print x
print y

La prochaine sujets que je vous recommande sont à la compréhension de comptage de référence ainsi, l'apprentissage de ce "stage" signifie (mais pas nécessairement), l'apprentissage de la profonde et peu profonde copies (comme dans l'Exemple 3 ci-dessus), et enfin, les interrelations entre les différents types de constructions et dans la langue, c'est à dire les listes vs n-uplets, dicts vs jeux, les interprétations de la liste vs générateur d'expressions, les itérateurs vs générateurs, etc.; cependant, tous ces autres suggestions sont un autre post pour une autre fois. Espérons que cela aide dans l'intervalle! :-)

ps. Je suis d'accord avec les autres réponses pour obtenir plus intime avec l'introspection ainsi que l'étude d'autres projets de code source et d'ajouter une forte "+1" à la fois pour des suggestions!

pps. La grande question de la TVA. Je souhaite que j'ai été assez intelligent dans le début, à avoir demandé quelque chose comme cela, mais c'était il y a longtemps, et maintenant je suis en train d'aider les autres avec mes nombreuses années à temps plein, de programmation Python!!

67voto

twneale Points 1094

Découvrez Peter Norvig, son essai sur la manière de devenir un maître programmeur dans 10 ans: http://norvig.com/21-days.html. J'avais parier c'est vrai pour n'importe quelle langue.

59voto

Mark Harrison Points 77152

Comprendre L'Introspection

  • écrire un dir() équivalent
  • écrire un type() équivalent
  • comprendre comment le "singe-patch"
  • utiliser l' dis module de voir comment les différentes constructions d'un langage de travail

En faisant ces choses vous

  • vous donner quelques bonnes connaissances théoriques sur la façon python est mis en œuvre
  • vous donner quelques bonnes pratiques de l'expérience dans le bas-niveau de programmation
  • vous donner une bonne sensation intuitive pour python structures de données

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X