Vous êtes sur la page 1sur 11

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

1 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

[Python]Spyder, le super diteur de code, et aide au debug


Auteur

Message

Sekigo Le Magnifique

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Lun 20 Fv 2012 - 16:19

Non, mais, ne vous cassez pas la tte sur ce point. Le python est recommand suivant les acadmies, me semble-t-il. Puis, a reste
une recommandation, pas une obligation, tout comme le fait d'apprendre l'algo par l'informatique.
Python est certainement utilis parce que pas mal utilis dans le milieu scientifique, y a un tas de bibliothque SERIOUS BUSINESS
en math, on peut expdier l'apprentissage des bases du langages en deux heures et c'est interprt pour voir le rsultat en direct.
Puis, c'est sous une licence trs permissive, a permet de ne pas s'embarrasser de contrat ou de licence acheter.
Mais vous n'apprendrez jamais faire un jeu VIDO ou fouiner en mmoire vive en cours de math, a, c'est peu prs sur. On va
pas devenir la soudaine patrie de milliers de Linus Torvald et John Romero.
Sekigo Le Magnifique

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Mar 21 Fv 2012 - 18:43

Petit disclaimer :
J'ai traduis c et article depuis le blog de pythonconquerstheuniverse. I l conc erne l'utilisation du debugger Python.
I l y aura une suite cet article un peu plus tard, crit par moi-mme, pour expliquer comment un peu automatiser ce dbuggage avec un I DE.
Pourquoi utiliser un debugger alors qu'on peut utiliser l'instruction print ? Parce que, si le code commence devenir gros, des print dans tout les sens, a commence
devenir ingrable. Et surtout, avec un I DE, a devient rudement pratique et intuitif.
Et le debuggage permet d'aller fouiller les objets, les fonctions, d'essayer un tas de machins en temps rel, etc...
J'ignore si ce tutoriel peut s'appliquer en partie gdb, le debugger pour C. Je me souviens qu'on peut lancer Python l'intrieur de celui-ci, mais je n'en sais pas plus.
L'utilisation du debugger n'est pas rserv aux grands pros du python. Mme si vous dbutez en Python, vous pouvez vous en servir.
Et l'utilisation du print n'est pas non plus proscrire totalement, c'est plus pratique dans le cas de petit scripts.
La traduction est "librale". Je ne suis pas Google Translate ni professeur la Sorbonne, j'y ai t l'arrache.

Dbugger un programme en Python


En tant que programmeur, une des premires choses dont vous auriez besoin pour un dveloppement srieux serait un debugger.
Python incorpore dj un debugger, qui est disponible comme module nomm pdb (pour Python DeBugger). Malheureusement, la
plupart des discussions concernant pdb sont difficilement accessible pour les dbutants elles sont trs laconique et de simples
resuces de la description de pdb dans la documentation de Python.
Donc, voici ma propre introduction l'utilisation de pdb. Partons du principe que vous n'utilisez aucun IDE spcifique vous codez
avec un diteur de texte des plus banals et vous lancez vos programmes Python depuis la ligne de commande.

Mise en route pdb.set_trace()


Pour commencer, je vais vous montrer la manire la plus simple d'utiliser le debugger Python.

crivons un petit programme, epdb1.py


Code:
# edpb1.py -- experimentation de pdb
a = "aaa"
b = "bbb"
c = "ccc"
final = a + b + c
print(final)

Insrons la dclaration suivante au dbut de ce programme.


Cette dclaration importe le module de debuggage Python, pdb.
Code:
import pdb

Maintenons, trouvons un endroit o nous aimerions inspecter le code, et insrons le code suivant.
Code:
pdb.set_trace()

Dsormais, le programme ressemble cela :


Code:
# edpb1.py -- experimentation de pdb
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print(final)

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

2 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Lancez le code depuis la ligne de commande:


Code:
PROMPT> python epdb1.py

Quand le programme rencontrera la ligne pdb.set_trace(), il va commencer l'inspection. Pour cela, il va :


1. s'arrter,
2. afficher la "dclaration courante" (en fait, la ligne qui va tre excuter la prochaine tape),
3. attendre une entre.

Nous pouvons voir le prompt pdb, qui ressemble :


Code:
(Pdb)

Excutons la prochaine dclaration... avec n" (next)


Dans le (Pdb) prompt, entrez la lettre n (pour "next") en minuscule, et appuyez sur Entre. Cela va demander pdb dexcuter la
dclaration courante. En rptant cette manipulation, vous finirez par quitter le programme, en retournant la ligne de commande.
Flicitation ! Vous avez ralis votre premier debuggage !

Rpter la dernire commande de debuggage... avec Entre


Lancez de nouveau notre code, et entrez la lettre n dans le (Pdb) Prompt (comme vu plus haut) la premire fois qu'il demande
une instruction.
Une fois cette instruction donne et excut, appuyons UNIQUEMENT sur Entre, sans rajouter le n minuscule. Le code va
continuer comme si un n avait t insr.
Voil donc le Truc #1 :
Citation :
Si vous pressez Entre sans entrer quoi que ce soit d'autres, pdb re-excutera la dernire commande entre manuellement.

Dans cet exemple, la dernire commande tait n (next), donc vous pouvez la r-excuter tout au long du debuggage en appuyant
uniquement sur Entre.

Tout quitter... avec q (quit)


Le debugger peut effectuer toute une foule de choses, dont certaines qui peuvent paratre un poil obscur. Mais la chose la plus
importante apprendre pour le moment est de quitter le debugger !
C'est facile. Quand vous voyez le (Pdb) prompt, pressez q (pour "quit") et la touche Entre. Pdb va se terminer et vous
retournerez la ligne de commande. Essayez, et observez comment cela fonctionne.

Afficher la valeur des variables... avec p (print)


La chose la plus utile que vous puissiez faire avec pdb est d'afficher la valeur d'une variable. Voyons voir comment faire.
Lorsque vous tes dans le (Pdb) prompt, entrez p (pour "print"), suivi du nom de la variable que vous souhaitez inspecter. Et,
bien entendu, de valider la commande avec Entre.
Notez aussi que vous pouvez afficher plusieurs variables en mme temps, en sparant leurs noms par une virgule (comme une
instruction Python rgulire "print"). Par exemple, vous pouvez afficher la valeur des variables a, b et c de cette manire :
Code:
(Pdb) p a, b, c

Quand est-ce que pdb excute une ligne ?


Supposons que vous ayez progresser travers le programme jusqu' voir la ligne :
Code:
final = a + b + c

et que vous demandiez la commande :


Code:
p final

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Vous auriez alors l'exception NameError. Pourquoi ?


Parce que, malgr que vous puissiez voir cette ligne, elle n'a pas encore t excut. Par consquent, la variable final n'a pas
encore t cre.
Maintenant, entrez n et excutez cette ligne de code. Ressayez la commande "p final". Cette fois, pdb va afficher la valeur de
final, qui est "aaabbbccc".

Couper le (Pdb) prompt... avec c (continue)


Vous aurez probablement notez que la commande q coupe pdb d'une manire particulirement crue en fait, en tuant le
programme.
Si vous souhaitez simplement coupez le debuggage, mais laissez le programme s'excuter normalement, entrez la commande c
(pour "continue") dans le (Pdb) prompt. Cela forcera le programme a continu sans tre mis en pause par le debugger.
Cette commande peut tre lanc au dmarrage, ou si l'instruction pdb.set_trace() se trouve l'intrieur d'une boucle, elle
continuera sans pause jusqu' la prochaine rencontre avec pdb.set_trace(), o (Pdb) prompt rapparatra.

Voir o l'on se trouve... avec l (list)


Lors d'un debuggage, il peut y avoir plein de chose inscrit l'cran, et il peut tre dur de savoir o l'on se trouve actuellement dans
le code.
La commande l (pour "list") est l pour cela.
l affiche sur l'cran la zone de votre code source o vous vous situez dans l'excution courante. Par dfaut, elle liste 11 lignes de
code. La ligne de code o vous vous situez trs exactement est au centre de cette zone, avec une petite flche "->" pointant sur
elle.
Pour rsumer, voici une interaction typique avec pdb :

La dclaration pdb.set_trace() est rencontre, et vous commencez le debuggage avec le (Pdb) prompt.
Vous pressez n et Entre, pour passer l'tape suivante du code
Vous pressez Entre pour une tape supplmentaire.
Vous pressez Entre pour une tape supplmentaire.
Vous pressez Entre pour une tape supplmentaire, etc...
D'un coup, vous ralisez que vous tes lgrement perdu. Vous n'tes plus trop sr o vous en tes dans le code.
Vous pressez l et appuyer sur Entre. Cela liste la zone du programme o vous vous trouvez.
Vous inspectez l'cran, retrouvez vos repres, et tes prt "repartir".
Vous pressez n et ensuite Entre, pour passer l'tape suivante.
Vous pressez Entre pour une tape supplmentaire.
Vous pressez Entre pour une tape supplmentaire.
Vous pressez Entre pour une tape supplmentaire, etc...

Entrer dans une squence d'instructions... avec s (step into)


Vous pouvez avoir debugger un gros programme programme qui utilise des squences d'instructions (fonctions, classes,
etc...).
Et parfois, le problme que vous essayez de trouver se trouve profondment enfoui dans une de ces squences. Considrons le
programme suivant:
Code:
# epdb2.py
import pdb
def combine(s1, s2):
s3 = s1 + s2 + s1
s3 = '"' + s3 + '"'
return s3
a = "aaa"
pdb.set_trace()

Durant votre navigation via pdb, en utilisant la commande n, dans ce programme, vous vous retrouvez devant une instruction qui
invoque une autre squence d'instructions ici, l'instruction final = combine(a, b) que pdb traite comme tout autre
instruction. C'est dire, l'instruction est execut et vous passez l'instruction suivante ici, print(final).
Supposez qu'il y ait un problme dans cette squence d'instructions. Dans notre cas, supposons que vous suspectiez qu'il y ait un
bug dans la fonction combine(a, b). Ce que vous voulez, c'est pntrer l'intrieur de cette fonction et la dbugger de l'intrieur.
Bien entendu, vous pouvez le faire. Faites cela avec la commande s (pour "step into").
Lorsque vous excutez une instruction qui ne provoque pas d'appel de fonctions, n et s font la mme chose, passer l'tape
suivante du code. Mais lorsque vous excutez une instruction qui invoque une fonction, s, contrairement n, va pntrer DANS
cette fonction.
Dans notre exemple, si vous excutez l'instruction

3 sur 11

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

4 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Code:
final = combine(a, b)

en utilisant s, la prochaine instruction que pdb va afficher sera la premire instruction de la squence d'instruction
Code:
def combine(s1, s2):

et vous continuerez la procdure de debuggage l'intrieur de celle-ci.

Continuer... mais jusqu' la fin de la squence d'instructions actuelle... avec r (return)


Quand vous utilisez s pour pntrez l'intrieur d'une squence d'instructions, vous vous retrouverez coinc l'intrieur de cette
squence. Vous avez dj examin le code qui vous intressais, mais maintenant, vous devez naviguer travers un tas de ligne
compltement inintressante de la squence d'instruction.
Dans cette situation, vous souhaiteriez tre capable de sauter directement la fin de la squence. En fait, vous voulez faire
quelque chose comme la commande c ("continue"), mais vous voulez aussi continuer le debuggage la fin de la squence
d'instruction, et retournez en mode "pas--pas" dans le reste de votre code.
La commande pour cela est r (pour "return" ou, mieux, "continue until return"). Si vous tes dans une squence d'instructions et
que vous tapez la commande r dans le (Pdb) prompt, pdb va excutez sans interruption (sauf si vous l'avez demandez
explicitement dans le code avec la fonction pdb.set_trace()) le code de la squence en cours jusqu' la fin. Arriv ce stade
stade de retour la routine appelante pdb va mettre en pause le programme et afficher de nouveau un (Pdb) prompt, o vous
pourrez de nouveau naviguer travers le code.

Faites n'importe quoi dans le (Pdb) prompt...


Quelques fois, vous pouvez vous retrouver dans la situation suivante : vous pensez avoir dcouvert le problme. Disons que
l'instruction o vous affectez la valeur "aaa" la variable var1 est fausse, et fait capoter votre jolie programme. Vous auriez d
affecter la valeur "bbb" var1.
... enfin, disons que vous tes quasiment sr que le problme est situ l...
Ce que vous souhaiteriez rellement faire maintenant est d'affecter "bbb" var1, et voir si le programme continue s'excuter
sans exploser.
Une des choses les plus sympas avec le (Pdb) prompt est que vous puissiez faire n'importe quoi l'intrieur de celui-ci vous
pouvez effectuer n'importe quelle commande. Bon, pour le moment, entrez cette commande dans le (Pdb) prompt :
Code:
(Pdb) var1 = "bbb"

Maintenant, continuez naviguer en mode "pas--pas" au sein de votre programme. Ou, si vous avec une me d'aventurier
suicidaire, utilisez c pour couper le debugger et voir si le programme explosera quand mme avant la fin !

... Mais soyez quand mme un peu prudent !


Maintenant que vous tes le roi du ptrole dans le (Pdb) prompt, vous pourriez avoir envi d'essayer diverses choses, comme par
exemple affecter "BBB" la variable b.
Code:
(Pdb) b = "BBB"

En faisant cela, pdb va afficher une trange erreur, expliquant qu'il ne peut pas trouver un objet nomm '="BBB"'. Mais pourquoi
????
En fait, pdb va tenter d'excuter la commande "b", qui configure et liste les breakpoints (une commande dont nous n'avons pas
trait). Il va aussi interprter le reste de la ligne comme un arguments pour la commande b, et ne pourra donc pas trouver l'objet
dont il est question (en loccurrence ici, '="BBB"'). Donc, il va lever un message d'erreur.
Comment donc affecter une nouvelle valeur b ? Le truc est de faire dbuter la commande par un point d'exclamation.
Code:
(Pdb)!b = "BBB"

Ce point d'exclamation va permettre pdb de comprendre que la commande est une instruction Python, et non une commande
pdb.

The End
Voil, c'est tout pour le moment. Il y a un grand nombre de points que je n'ai pas abords ici, comme l'aide, les alias ou les
breakpoints. Pour toutes informations les concernant, allez zieuter la rfrence pour les commandes pdb de la documentation

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

5 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

officielle Python. En complment, je vous recommande l'article de Jeremy Jones, Interactive Debugging in Python dans le OReillys
Python DevCenter.
En esprant que cette introduction pdb vous sera utile [pleindeblablachianttraduire]. Bonne chance !
Steve Ferg
Sekigo Le Magnifique

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Sam 3 Mar 2012 - 0:42

Et voil la suite de l'article. Cette fois-ci, j'en suis l'auteur.


C'est surtout un artic le de "promotion" pour cet excellent diteur de code qu'est Spyder. I l est trs peu connu, et pourtant, il a tout d'un grand.
Concernant le code prsent ici, c'est une partie de mon code qui est utilis pour le moteur de carte d'un petit jeu que je fais. Vu que le projet sera sous licence libre,
je m'en fous royalement si vous prenez les lignes de codes. De toute faon, on voit rien donc, a m'tonnerais que a arrive.
J'ai pris ce code, parce que c 'est le dernier sur lequel j'ai boss. C'est tout, ce n'est pas un super code et je suis loin d'en avoir termin avec lui.
Et pour l'artic le, il est sous licence Licence Creative Commons Paternit - Partage l'I dentique 3.0 non transpos. En gros, vous en faites ce que vous voulez (modifier,
vendre, diffuser, vous torc her avec au chiotte), du moment qu'il reste sous c ette licence.
Et dsol pour les images zooms, j'ai mal envoy les images sur lhbergeur. Du coup, a a chi dans la colle. J'diterais tout ce foutoir demain. Finalement, j'ai eu le
courage de le faire dans la soire.

Debugger un programme l'aide de Spyder


Nous avons vu plus haut comment debugger un programme l'aide de pdb. Avec l'aide de l'IDE Spyder ( qui est devenu mon
diteur de code python favori ), nous allons voir qu'il est possible de se passer de la premire tape, c'est dire l'import de pdb et
mettre des marqueurs, via pdb.set_trace(), dans le code pour passer en mode pas--pas certains points prcis.
De nombreux autres diteurs offrent ce type de fonction bien pratique au quotidien.

Marquer le code
Tout d'abord, nous nous dplaons vers un endroit intressant, o nous souhaiterions inspecter le code.
Ici, nous prendrons comme exemple une boucle qui a pour fonction d'instancier ( en python, tout est objet ) un caractre unicode,
et de le "linker" dans une nouvelle instance Tile, qui est elle-mme li dans une liste-attribut de la classe Tileset. Ce caractre
reprsente l'image provisoire avant que je cre en rel le moteur de sprite bitmap.
Pour rsumer mon besoin, je suis curieux de connatre le caractre unicode correspondant l'ID de la tuile.

Donc, je vais tagger cette ligne comme un point d'arrt pour pdb. Pour cela, il me suffit :
- soit de double-cliquer dans l'espace gauche cot de mon numro de ligne.
- soit d'appuyer sur F12.
Et hop, le code est tagger ce point prcis comme devant tre inspecter.

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

6 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Maintenant, je lance le debugger. Pour cela :


- soit je passe par le menu excution/debogger
- soit j'appuie sur la touche correspondante ( je l'ai personnalis, j'ai donc la touche F6 ).
Et nous passons maintenant dans la console, qui se trouve en bas droite chez moi ( chaque widget peut tre dplac sa guise).

Inspection du code

Bon, je revois rapidement les commandes lists ci-dessus. Un "r" pour dbuter, et hop, me voil instantanment dans la boucle
inspecter. En passant, je vois que la partie diteur ( gauche, l o j'cris le code quoi ) place le curseur automatiquement
l'endroit o je suis dans le code. Bien pratique dans les longs codes sources.
Donc, je souhaite inspecter la variable locale "char" qui correspond mon caractre unicode. En temps normal, j'aurais, si j'ai bien
suivi le tutoriel plus haut, insrer "p char; r" pour afficher le caractre unicode et sauter au prochain saut de boucle.
Mais nous allons utiliser une petite feature de Spyder, l'affichage dynamique des variables locales.

Dans l'encadre en haut, nous pouvons voir toutes les variables locales actuellement utiliss. Donc, la variable "char" vaut "@" et la
variable "gid" ( correspondant mon numro de saut de boucle ici ) vaut 0. Mission accompli, je connais mon caractre unicode.
Je continue tranquillement de passer mon code avec la commande "r" jusqu'au saut de boucle 98.

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

7 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Dsormais, la variable "char" vaut "". Mais voil, ce signe me rappelle de mauvais souvenirs, un monstre ber-puissant dans mon
roguelike favori. Je souhaiterais le modifier en "@" parce que a reprsent le hros dans ce jeu.
Deux possibilits :
- Soit je rentre la commande "char = '@'".
- Soit je double clique sur la case "char" et j'insre mon caractre @.
Et voil, j'ai modifi dynamiquement une variable de mon code en mmoire. Et ce, en quelques secondes !
videmment, c'est un comportement stupide et allant l'encontre de la logique de mon code. Mais a, je m'en fous pas mal dans
l'exemple de cet article.

Limitation de Spyder
L'affichage dynamique de spyder reprsente toutefois un petit dfaut. Il n'affiche pas les objets qu'il ne sait pas analyser ( par
exemple, nos classes personnelles ), et on ne peut donc pas modifier dynamiquement ces objets.
Par exemple, si j'ai un objet Orc avec des attributs HP et MP, je ne pourrais pas modifier ou lister graphiquement les attributs de cet
objet. Il faut passer par la ligne de commande. C'est un peu dommage dans le cas d'un objet complexe, o l'on ne se souvient pas
forcment de tout ses attributs et de toutes ses fonctions. Il faut donc fouiller dans le __dict__ de cet objet pour retrouver ce que
l'on souhaite. videmment, ce n'est pas un norme dfaut, on a quand mme le code sous les yeux en parallle et il y a l'autocompltion, et ce sera corrig dans une prochaine version.

Pour conclure, trois petits bonus pour vous persuader d'utiliser ce magnifique IDE.

Bonus 1: l'inspecteur de code ( ou la documentation dynamique )

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

8 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Dans l'encadre en haut gauche, Spyder affiche la documentation de la fonction ou de la classe en cours d'utilisation. Et cela, y
compris pour votre propre code, l'intrieur du module que vous ditez.
Par exemple, dans l'image, j'ai un peu plus haut dans le code ma classe Board. Il m'affiche les informations de signature de la
classe, ainsi que la docstring que j'ai renseign. En parallle, il m'affiche la signature uniquement dans une infobulle en-dessous de
mon curseur d'dition. Bien pratique quand une fonction prend pas mal d'arguments, ou pour viter de switcher sans arrt entre le
navigateur internet et l'diteur.
Un bmol toutefois, les bibliothques mal document dans le code ne sont pas prises en compte. Par exemple, PySFML n'affiche
rien, Pygame s'affiche car plus dans l'esprit python dans le code. Mais a reste quand mme relativement rare.

Bonus 2: Profiler le code ( ou connatre le temps d'execution de chaque partie de mon


code )

C'est un outil de profiling, assez utile quand on a besoin d'optimiser son code. Il est possible de l'utiliser sans passer par Spyder,
mais il devient bien plus intuitif avec celui-ci.
Bon, ici, le code n'est pas trs bien choisi, parce qu'il n'y a aucune opration lourde, mais a peut sauver un code qui bouchonne
quelque part sans que l'on sache o vraiment. Et puis, on peut partir dans une course au benchmarking !

Bonus 3: Pylint ( ou avoir une note concernant son code )

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Pareil que Profiler, c'est un outil stand-alone, mais bien intgr dans Spyder. Il donne une note notre code.
Attention toutefois, c'est une note concernant principalement le respect des rgles de syntaxe python ( par exemple, la clbre
PEP8 ) et la prsence d'erreurs ou non dans le code. Cela ne notera pas votre algorithme, ni votre architecture de code, ce serait
trop beau ( ou trop triste, c'est selon ).
L'utilit ? Harmoniser vos codes. En tentant d'atteindre le 10/10, vous aurez un code bien plus lisible, correctement document et
qui respecte les conventions pour la relecture ultrieur de code. Et cela permet de partir sur de bonnes bases dans les travaux en
quipe.
Et si vous tentez de l'utiliser sur un de vos modules python, ne soyez pas dprim par l'affichage d'un 3/10 ( oui, a m'est arriv la
premire fois... ) ! Cela se corrige trs facilement et vous progressez dans votre manire d'crire un code.
Oculus

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Mar 6 Mar 2012 - 22:00

C'est vraiment pas mal ces articles, faudrait les mettre en valeurs.
Sekigo Le Magnifique

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Mer 7 Mar 2012 - 1:01

Bah, je ne cherche pas vraiment ce qu'il soit en valeur. Je suis conscient que a s'adresse un auditoire relativement limit sur le
CBNA. Faut aimer python quoi, et aller au del des outils de base. a pose dj pas mal de contrainte.
Mais si jamais, a peut aider au moins une personne de passage, j'en serais dj content.
Ceci dit, je ne crache pas dans la soupe, si vous voulez rigez une statue mon honneur, pas de problme.

Sinon, j'utilise Tiled Map Editor. C'est un diteur de carte. C'est pas trop compliqu et a permet de raliser rapidement des cartes.
Bon, c'est limit, mais peu importe.
Ceci dit, y a un gros problme, le fichier de sortie. C'est du XML coupl des images. Ce n'est pas plus mal qu'une autre solution,
surtout pour un diteur qui se veut universel. Mais c'est vraiment trs ****** exploiter.
Du coup, j'ai fait un script python pour convertir ce fichier XML dans un dictionnaire Python, et incorporer les images dans ce
dictionnaire, par des chanes de caractres (du coup, tout tient dans une seule structure). Et ce dictionnaire est enregistr dans un
fichier.
Le lien google-code, le script est sous licence BSD
Y a dj des scripts pour faire la conversion Tiled=>Python, mais c'est gros et a ncessite des classes. L, tout tient dans les
structures de base de Python, et pas besoin d'importer quoi que ce soit d'autre (hormis cPickle, pour une question de logique).
Pour le moment, y a pas de support pour les layers Objets, mais a ne saurait tarder, parce que je vais en avoir besoin.
L'utilisation, c'est
python convert-tiled-to-python <file-in.tmx> <myfile>
Bien videmment, c'est un script qui continue vivre, vu que j'en ai besoin. Du coup, a sera souvent modifi, jusqu' une version
finale.
Voil, zokao.
Oculus

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Jeu 2 Mai 2013 - 0:14

Bon je me suis mis au Python :


Alors dj quelle ft le plaisir de tlcharger une machine virtuelle de seulement 20 mo. Je dois dire que j'ai t vraiment trs
surpris par cette taille vraiment faible.
Aprs c'est parti, on peut directe se lancer, j'ouvre Notpad++, j'cris un code basique, j'enregistre avec l'extension .py. J'ai juste
double cliquer et le tout se lance.
La syntaxe priori se rvle tre pas mal, lindentation pour les blocs d'instructions fait qu'au final notre code est propre.
On a pleins de bibliothques intgres c'est vraiment cool, pas besoins de se casser la tte.
Bon aprs pas de polymorphisme, le langage est moins riche que du C#
Mais je pense que c'est un bon langage pour dbuter ou mme tout simplement un bon langage

9 sur 11

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

10 sur 11

onilink_

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Jeu 2 Mai 2013 - 9:54

Bah a la base c'est un langage de script, et j'ai rarement vu des langages de script aussi volus que C# & co. Leur but n'est pas la
mais sur laccessibilit et le cot pratique de la chose :p
J'en ai fait le semestre dernier pour la fac, on a appris a parcourir des dossier et traiter des fichiers x)
C'est tout con mais coupl aux regex a permet quand mme de faire des trucs vachement cool
Et ouai, python est un bon langage, puis en plus on peut l'utiliser dans Blender \o/
_________________

Oculus

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Jeu 2 Mai 2013 - 16:14

C'est vrai que c'est un langage de script tellement volu que je le compare aux autres langages plus traditionnels.
Mais compar du Ruby, il est vraiment excellent :p
Sekigo Le Magnifique

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Dim 5 Mai 2013 - 17:22

Bonjour. J'ai eu quelques soucis de pc ces derniers temps (j'ai d m'en racheter un en urgence...).
Alors, concernant le polymorphisme, on peut en partie en faire. Au moins pourdriver de plusieurs classes, et pour la surcharge
d'oprateurs.
Code:
class A:
def testA():
pass
class B:
def TestB():
pass
class C(A, B):
pass

Code:
class A(object):
def __init__(self, value):
self.a = value
def __add__(self, other):
assert isinstance(other, A)
return self.a + other.a
def __repr__(self):
return "<A.a = %i>" % self.a

Y a un troisime type de polymorphisme, mais j'ai oubli ce qu'il signifiait et effectivement, je crois me souvenir que ce n'est pas
possible en Python.
Python pour dbuter, clairement. C'est le premier langage que l'on apprend dans mon universit, c'est qu'il y a une bonne raison.
Et par la suite, pour une utilisation avance, a reste toujours un bon langage. Je l'utilise quotidiennement mon boulot, j'ai
recod des systmes critiques "mtiers" et les perfs sont l.
Aprs, pour les jeux (ce dont il est question ici), je suis partag. Les performances sont excellentes, mais tre excellent ne suffit
pas pour les jeux. C'est un domaine qui a besoin de puissance brut (comme les OS, par exemple), et python peut malgr tout tre
largus dans des cas critiques.
Mais mme pour a, y a un tas de solutions :
- Utiliss avec des bibliothques crites en plus bas niveau. C'est ce que les pythonnistes font rgulirement en ralit. Python,
C'EST du C en interne. Du moins, l'implmentation de base. Il y a des implmentations dans d'autres langages (java, C#, etc...)
mais a reste exotique, et quand on parle de python, on parle 99% du temps de son implmentation en C.
- Utiliss Cython. On crit du code python, qui est traduit automatiquement en C. Il y a des trucs en plus (optionnel) utiliss en C.
Par exemple, la dclaration statique des variables, pour l'optimisation de la compilation. Une fois le type de variable dfini, il ne
bouge plus.
Voici un exemple de code Cython, que j'utilisais pour travailler sur les valeurs hsv et rgb d'une image issus d'un widget Qt :
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*"""
Created on Sat Jul 21 23:38:28 2012
@author: Sekigo
@licence : BSD -- http://www.freebsd.org/copyright/license.html
For compile this code :

16/05/2015 10:32

[Python]Spyder, le super diteur de code, et aide au debug - Page 2

11 sur 11

http://cbna.forumactif.com/t10755p20-pythonspyder-le-super-editeur-d...

python setup.py build_ext --inplace


Composition of buffer image:
32bits => Blue(8)-Green(8)-Red(8)-Alpha(8)
"""
import array
cpdef buffer_fading_to_color(buff, rgb, int intensity):
if intensity == 0:
return buff

Mais je comprendrais aisment que pour les jeux, on prfre utiliser le C, ou tout autre langages bien plus performant.
En tout cas, avoir appris Python, c'est un choix que je ne regrette absolument pas. C'est un langage trousse--outil complet, qui
est aussi bon en scripting qu'en programmation d'interface de logicel ou de dveloppement web. Et qui "oblige" avoir une bonne
pratique de la programmation et d'crire lisiblement.
Si je devais avoir une critique faire ce langage, c'est la communaut francophone quasi-inexistante sur le web. Y a bien le
forum du sdz et le forum de dveloppeur, ou encore linuxfr.org, mais a n'a rien voir avec la communaut anglophone, o par
exemple Python trust la premire place sur StackOverflow. Pourtant, y a pas mal de dveloppeurs franais qui connaissent le
python. Mais la plupart se tournent vers la communaut anglophone (moi y compris).
Et aussi un petit truc pour les futurs pythonnistes sous Windows (sous Linux, c'est dj moins utile avec le systme de paquet).
Installer et utiliser [url="https://pypi.python.org/pypi/pip"]PIP[/url]. Avec un simple
Code:
pip install pysfml

, a installera/compilera/configura automatiquement les bibliothques externes Python. Si j'ai un peu de temps cette semaine, je
ferais un petit tuto.
onilink_

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Dim 5 Mai 2013 - 17:38

A l'universit nous on a commenc direct par le C


Python on l'a vite fait appris en L2 juste pour les regex x)
_________________

Sekigo Le Magnifique

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Dim 5 Mai 2013 - 17:47

Well, c'tait une erreur de typo, j'aurais d prciser "MON universit". Autant dire que j'ai de l'avance sur le programme....
Les regex mriteraient un topic elles seules. C'est vraiment gnial comme truc, je l'utilise aussi quotidiennement mon boulot
(ce serait plus simple de dire les trucs utiliss au boulot : (python et regex) + (xml + xhtml + css) + XSLT (langage dcri sur le
net, mais que j'adore) + mysql + untasd'autrestrucs).
Par contre, n'utilisez JAMAIS de regex pour parser des structures comme du xml ou du html.... La principale raison pour laquelle
j'ai t embauch t justement pour nettoyer ces affreuses regex pour du xml qui foutent un dawa pas possible. Pour utiliser le
plus classique DOM.
Mais je suis tonn que vous ayez vu les regex avec Python. Elles sont trs bien, mais le PERL ou le PHP me semblait plus adapt
pour vous apprendre les regex.
onilink_

Sujet: Re: [Python]Spyder, le super diteur de code, et aide au debug

Dim 5 Mai 2013 - 18:21

Je pense que c'est car on les utilisait coupl a un peu de prog systme (parcours de fichiers/dossiers, lecture, parsing, criture).
Avec python c'est quand mme trs simple a faire.
_________________

[Python]Spyder, le super diteur de code, et aide au debug


Sujets similaires

[Python]Spyder, le super diteur de code, et aide au debug


Souci code formulaire > erreur de navigateur
La fentre d'dition a disparu...
Problme iframe
Super Fractale : L'arbre de Pythagore

Crer un forum | phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit

16/05/2015 10:32

Vous aimerez peut-être aussi