53 votes

Quels sont les bons moyens pour que mon code Python soit exécuté pour la première fois?

Je reçois pas mal d'erreurs dans mon code. Par conséquent, j'aimerais pouvoir les minimiser au départ ou voir autant d'erreurs que possible avant l'exécution du code. Est-ce possible et si oui, comment puis-je faire cela?

35voto

JimB Points 9246

Si vous rencontrez des problèmes avec la syntaxe, vous pouvez essayer un éditeur de texte avec coloration syntaxique. Jusqu'à ce que vous obtenez la sensation d'une langue, de simples erreurs ne seront pas simplement de la pop à vous.

La forme la plus simple de débogage est juste à insérer des instructions d'impression. Un plus avancé (et extensible) façon de le faire serait d'utiliser la journalisation du module de lutte contre les mst lib.

Interactive interprète est un merveilleux outil pour travailler avec du code python, et IPython est une grande amélioration par rapport à l'REPL (Read Eval Impression de Boucle).

Si vous voulez réellement à l'étape par le biais de votre code, le python débogueur est appelé apb, qui peut être appelée à partir de la ligne de commande, ou intégré dans votre code.

Si vous êtes habitué à un système entièrement intégré de l'IDE, je vous conseille d'utiliser Eclipse avec pydev, et PyCharm a une grande offre commerciale, avec la saisie semi-automatique, un accès rapide aux documents, et de nombreux raccourcis, parmi de nombreuses autres fonctionnalités intéressantes.

30voto

J.F. Sebastian Points 102961

Voici quelques techniques pour faciliter le débogage en Python:

  • utilisation du shell interactif par exemple, ipython. Python est un langage dynamique, vous pouvez explorer votre code que vous tapez. La coquille est en cours d'exécution dans la deuxième fenêtre dans mon éditeur à tout moment.

  • copier-coller à partir de la coquille en docstrings un code qui illustre une dominante d'utilisation et d'angle cas de la fonction (classe, module). doctest.testmod() placé dans un if __name__=="__main__" section permet de tester tous les docstrings dans le module. doctest peut être facilement intégré avec unittest.

  • utiliser assert pour des trucs qui ne peut jamais arriver.

  • print() pouvez résoudre de nombreux problèmes de débogage; journalisation module est adapté pour une longue durée de vie python processus.

  • écrire des tests (pas nécessairement avant votre code), de les exécuter souvent (automatiquement ou avec une frappe au plus); nez offre d'essai prolongée de la découverte et de l'exécution de fonctions pour unittest.

  • exécuter pylint parfois (même si c'est treaky à installer sur les systèmes non debian).

À ce point, il est un peu de l'utilisation d'une mise en python débogueur. Winpdb est externe multi-plateforme sous licence GPL GUI en python débogueur si vous en avez besoin.

15voto

S.Lott Points 207588

Tous les trucs vraiment cool est facilement démontré dans interactive interprète. Je pense que cela pourrait être le "gold standard" pour la conception:

Pouvez-vous exercer votre classe de manière interactive?

Si vous pouvez faire des trucs de manière interactive, vous pouvez écrire unittests et doctests avec confiance que c'est testable, simple, fiable.

Et, plus important, vous pouvez l'explorer de manière interactive. Il n'y a rien de mieux que la gratification instantanée qui vient de taper du code et de voir exactement ce qui se passe.

Le langage compilé habitudes (écrire un tas de trucs, déboguer un tas de choses, tester un tas de trucs, peut être laissé derrière. Au lieu de cela, vous pouvez écrire un peu de stuff, de l'explorer, d'écrire un test formel et ensuite, fixez votre peu de choses à la croissance de votre projet final.

Vous n'avez toujours conception globale. Mais vous n'avez pas gaspiller de temps à écrire du code qui peut ou peut ne pas fonctionner. En Python vous écrire du code qui fonctionne. Si vous n'êtes pas sûr, vous jouez avec elle de manière interactive jusqu'à ce que vous êtes sûr. Ensuite, vous écrivez du code qui fonctionne.

10voto

Amit Points 503

Python fournit un débogueur qui vous permet de parcourir votre code, inspecter les variables et les manipuler. Reportez-vous à http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/ qui peut vous emmener sur les étapes...

Vérifiez également le python à la bibliothèque standard de référence pour apb http://www.python.org/doc/2.5.2/lib/module-pdb.html

--Amit

10voto

scottm Points 401

Je suis nouveau sur python, et ont essayé plusieurs différentes débogueurs. Voici les options que j'ai rencontré jusqu'à présent:

  1. Eclipse avec Pydev - Si vous êtes déjà à l'aide d'eclipse, c'est probablement la voie à suivre. Le débogueur fonctionne bien, et est assez plein de fonctionnalités.
  2. Komodo IDE - UN peu de poids python IDE. Fondamentalement, un éditeur de texte + un débogueur. C'était vraiment facile de comprendre et d'être productif immédiatement.
  3. WinPDB - Essayer celle-ci suivant. Semble très plein de fonctionnalités, et j'arrive à utiliser n'importe quel éditeur de j'ai choisi.
  4. APB - n'ai pas encore essayé depuis que j'ai lu sur la façon WinPDB est une meilleure alternative.
  5. Ipython avec %de la commande run - j'ai utilisé IPython, mais pas comme un débogueur comme ça. J'ai besoin d'essayer cela. (Merci pour l'astuce, EOL)
  6. Eric IDE - Aussi sur la liste d'essayer.
  7. De la vieille école, d'imprimer, faire valoir états - Simple, utile, mais pas une solution complète.

Débogage de la mémoire - Pour déboguer les problèmes de mémoire, j'ai rencontré quelques outils:

  1. objgraph - Va générer de la png de référence graphiques. Neat. Il y a d'autres fonctionnalités, comme: l'importation objgraph;print(objgraph.show_most_common_types(limit=10)) imprimer le top 10 des types les plus communs dans la mémoire.
  2. gc module - Interagir directement avec le garbage collector.
  3. heapy de Segment de mémoire de l'analyseur. Par exemple: à partir de guppy importation hpy; hp = hpy(); print(ch.tas()) print les types les plus courants, leur utilisation de la mémoire, etc.

C'est une liste très incomplète, mais j'espère que c'est un bon début.

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