41 votes

Comment écrire du code de plus d'une ligne dans l'interpréteur Python?

J'ai un problème de codage Python dans le terminal. Je suis en train d'apprendre les bases, donc je n'ai pas besoin de créer de fichiers .py.

Dans le terminal, je peux exécuter une ligne de code dans l'interpréteur Python, mais comment écrire plus d'une ligne ?

Évidemment, si j'appuie sur Entrée, cela exécute la commande et ne descend pas d'une ligne.

Je veux juste tester ce qui suit dans le terminal :

my_age = 35
my_eyes = 'Bleu'
print "j'ai %d ans et mes yeux sont de couleur %s" % (my_age, my_eyes)

37voto

slhck Points 209720

Ajouter un backslash final (\)

Le truc est - similaire à ce que vous feriez dans bash, par exemple - d'ajouter un backslash final. Par exemple, si je veux imprimer un 1:

charon:~ werner$ python
>>> print 1
1
>>> print \
... 1
1
>>> 

Si vous écrivez un \, Python vous demandera ... (lignes de continuation) pour entrer du code à la ligne suivante, pour ainsi dire.

Note: C'est ce qui se passe automatiquement lorsque vous créez une définition de fonction ou de classe, c'est-à-dire les moments où vous avez vraiment besoin d'une nouvelle ligne, donc il n'y a jamais vraiment de bonne utilisation pour cela, ou du moins aucune que je connaisse. En d'autres termes, Python est assez intelligent pour savoir que vous avez besoin de lignes de continuation lorsque vous entrez une nouvelle définition de fonction ou d'autres constructions similaires (par exemple if:). Dans ces cas automatiques, notez que vous devez entrer une ligne vide en utilisant \ pour indiquer à Python que vous avez terminé.

Pour tout le reste, vous devez écrire une ligne après l'autre. La façon dont fonctionne un interpréteur est qu'il interprète chaque ligne que vous lui soumettez. Ni plus, ni moins. Il "agira" seulement lorsqu'il verra un retour à la ligne, vous indiquant ainsi à l'interpréteur d'exécuter ce que vous lui avez donné. Le backslash simple empêchera l'interpréteur de recevoir un caractère de retour à la ligne (c'est-à-dire qu'il ne saura pas que vous avez réellement appuyé sur Entrée), mais il finira par en recevoir un.

L'interpréteur de Python a des capacités avancées lorsque vous utilisez GNU readline, comme les raccourcis clavier de style Emacs ou vi pour naviguer à l'intérieur d'une ligne (par exemple, Ctrl-A). Cependant, ceux-ci fonctionnent seulement dans la ligne actuelle. L'historique est également là, essayez juste et appuyez sur .

Que faire si je veux exécuter des lignes compliquées encore et encore?

Vous voulez probablement utiliser des fichiers source appropriés si vous voulez exécuter plus d'une ligne de code à la fois.

Ou, utilisez des notebooks Jupyter, qui offrent un excellent moyen interactif de créer du code Python avec un interpréteur intégré. Vous pouvez écrire du code comme vous le feriez dans un éditeur de code source, mais vous pouvez choisir quelles lignes sont interprétées ensemble. Vous pouvez ensuite exécuter uniquement certaines parties du code de manière sélective. La meilleure façon est d'essayer et de voir si cela convient à votre flux de travail.

10voto

vidhyarthi Points 8

Que diriez-vous d'utiliser ;\ ? Le point-virgule signale la fin d'une commande et le backslash indique que nous continuons sur la ligne suivante. Par exemple, tapez python à la ligne de commande pour accéder à l'interpréteur Python, puis

>>> x=0 ;\
... print(x) ;\
... x=4 ;\
... print(x)

devrait donner une sortie de

0
4

4voto

Curious Blade Points 41

Je parcourais simplement la réponse que vous avez obtenue. J'ai continuer à expérimenter en mettant différents symboles. J'ai finalement trouvé la syntaxe correcte pour l'écrire. Essayez ce qui suit

print("more string") ; print(3)

cela vous donnera un résultat

more string

3

sans aucune erreur

j'ai simplement utilisé ';' pour le faire écrire sur une autre ligne

j'espère que ma réponse pourra vous aider

2voto

Rory Alsop Points 3287

Tout simplement, si vous voulez apprendre et exécuter plus d'une ligne, vous l'écrivez dans un fichier .py.

La méthode du backslash final est bonne lorsque vous voulez rapidement exécuter une série de commandes, mais elle n'aide pas lorsque vous êtes en train d'apprendre.

Vous serez en mesure de développer un code de meilleure qualité, modifier des commandes individuelles sans vous préoccuper des fautes d'orthographe, et réutiliser des extraits de code utiles si vous les écrivez dans un petit fichier.

1voto

Keith Thompson Points 4865

J'ai simplement tapé ce qui suit à mon invite de shell, et ça a très bien fonctionné :

$ python
Python 2.7.3 (par défaut, 1 août 2012, 05:16:07) 
[GCC 4.6.3] sur linux2
Tapez "help", "copyright", "credits" ou "license" pour plus d'informations.
>>> mon_age = 35
>>> mes_yeux = 'Bleu'
>>> print "mon âge est %d et la couleur de mes yeux est %s" % (mon_age, mes_yeux)
mon âge est 35 et la couleur de mes yeux est Bleu
>>> 

La manière de taper plus d'une ligne de code dans l'interpréteur interactif Python, eh bien, c'est de taper plus d'une ligne de code dans l'interpréteur interactif Python. Je pense que cela devrait être suffisant pour vos besoins.

Il est vrai que vous obtiendrez une nouvelle invite après chaque ligne, ce qui signifie que si deux de vos lignes de code produisent une sortie, cette sortie sera séparée par des invites. Je suppose que c'est ce qui vous préoccupe, bien que l'exemple dans votre question ne le suggère pas :

$ python
Python 2.7.3 (par défaut, 1 août 2012, 05:16:07) 
[GCC 4.6.3] sur linux2
Tapez "help", "copyright", "credits" ou "license" pour plus d'informations.
>>> print "première ligne"
première ligne
>>> print "deuxième ligne"
deuxième ligne
>>> 

Si c'est un problème, vous pouvez inclure vos multiples instructions dans une déclaration if (correctement indentée!) :

$ python
Python 2.7.3 (par défaut, 1 août 2012, 05:16:07) 
[GCC 4.6.3] sur linux2
Tapez "help", "copyright", "credits" ou "license" pour plus d'informations.
>>> if 1:
...     print "première ligne"
...     print "deuxième ligne"
... 
première ligne
deuxième ligne
>>> 

(Je suggérerais, même si cela ne répond pas à votre question, que si vous écrivez du code assez complexe pour que cela importe, vous devriez écrire des scripts. Peut-être avez-vous commencé à le faire dans l'année et demi écoulée depuis que vous avez posté la question.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X