La bonne vieille époque du BASIC vous manque ? Vous voulez retrouver le pouvoir d’aller et venir n’importe où dans votre code et faire des scripts spaghetti bien dégueulasses ?
Téléchargez Go To pour Python.
Le 1 avril est bien passé, et cette lib existe pour de vrai. Elle vous permet de retomber en enfance où on dirait que toi tu peux poser un label et moi je peux y aller directement :
from goto import goto, label label .start print "C'est pas du jeu" for i in range(1, 4): print i if i == 2: try: output = message except NameError: print "T'as oublié le message." message = "Salut" goto .start print output, "\n" |
Si vous regardez le code souce, vous verrez que l’implémentation est une bouillie immonde qui sauvegarde les frames dans un cache et les rebalancent quand on gotouse.
Merci à l’auteur d’avoir pondu cette lib indispensable, si elle n’avait pas existé, je l’aurais codé.
je vais juste laisse ça ici: GO TO HELL
YES !!!!
J’adore le basic !!!!
Je veux revenir à visual basic 6 !!!!!!! ;(
Ma che cosa? non vi piacciono gli spaghetti?
Non disgusto l’altra. Porca miséra!
C’est forcément plus rapide, puisque c’est plus proche de l’assembleur ! C’est génial ! Je vais de ce pas mettre à jour tous mes codes.
Bon, cela dit, j’ai quand même une question : Comment on fait pour déclarer des mots-clés comme le monsieur le fait avec label et goto ? C’est possible en pur python (même si je suppose que c’est pas conseillé) ?
@kontre: je crois que c’est clair:
http://docs.python.org/2/library/token.html
http://docs.python.org/2/library/tokenize.html
ça a pas l’air trop compliqué ni trop long à faire, le plus gros des octets de la lib en question c’est de la docstring.
Et moi, j’aimerais bien savoir où le setup fourre le script.
Il est bien quelque par, puisque je n’ai pas d’erreur à l’import.
Quelque part…mais où ?
C’est vraiment moche, pas conseillé mais tu peux faire ça
>>> def coucou():
... return "coucou"
...
>>> __builtins__.yop = coucou
>>> yop
@kontre: il ne déclare pas de mot clé, pas plus que ruby ne permet d’écrire des DSL. On utilise juste des subtilités de la syntaxes pour donner l’illusion. En ruby, l’absence de parenthèses donne l’illusion que l’enchainement de méthodes est un DSL. En Python, on peut mettre autant d’espaces que l’ont veut entre un objet et son attribut.
Quand il fait
label .start
, il fait en faitlabel.start
, tout simplement.@roro:
import goto; print(goto.__file__)
This is madness Ò-Ó
Fools! You don’t know what you just did! We all gonna die!
(goto c’est le mal me disait toujours mon maître en me tapant avec un baton)
J’ai exécuté le setup, mis ton bout, ou les exemples dans l’idle:
Erreur sur le mot: label. Pas sur import!.
Ta ligne dans la console par contre me dit clairement qu’elle ne trouve pas le module.
Question: Où je mets le goto.py ? Pour voir fonctionner cette merveille.
Y a-t-il un module pour le gossub ?
@roro : comme toujours, si tu donnes pas le message d’erreur, non seulement tu n’auras pas la réponse à ta question mais en plus je planterais une aiguilles dans ta poupée vodoo. Tu peux cependant juste mettre goto.py dans le même répertoire que ton script pour que ça marche.
@sil : tu peux installer une_pipe_et_un_mars.py, je crois qu’il est sur pypi.
D’accord, c’est super sioux ! Mais du coup, c’est encore moins utile que ce que je pensais.
Cet article me rappelle ma déception quand j’ai vu qu’ils allaient rajouter des goto en Lua (mais dans des cas bien limités, en gros c’est pour sortir des boucles). Il est sympa ce langage, aussi…
Cette lib a été utilisée pour un poisson d’avril en 2004 je crois, c’est normal que ce soit inutile. C’est comme
for __future__ import braces
, c’est des trucs qu’on ne veut jamais voir en Python.Un truc que j’ai vu dernièrement dans la rubrique “inutile”:
Réabilitation des
{}
dans Python !@Sam. Ah ben ouais..Que je suis con!
C’est que d’habitude, je mets les scripts dans le python; comme ça ils ont qu’à se servir.
Voici un lien pour les visiteurs curieux où est dit, tout ce qui peut l’être du: GOTO (18 pages)
http://www.developpez.net/forums/d75764/c/que-pensez-vous-du-goto/