Quelle est la différence entre Python et IPython?


220

Quelle est exactement la différence entre Python et IPython ?

Si j'écris du code en Python, s'exécutera-t-il en IPython tel quel ou doit-il être modifié?

Je sais que IPython est censé être un shell interactif pour Python, mais est-ce tout? Ou existe-t-il un langage appelé IPython? Si j'écris quelque chose sous IPython, cela fonctionnera-t-il en Python et vice versa? S'il y a des différences, comment savoir ce qu'elles sont? Tous les packages utilisés par Python fonctionneront-ils comme dans IPython?

Réponses:


153

ipython est un shell interactif construit en python.

Depuis le site Web du projet:

IPython fournit une boîte à outils riche pour vous aider à tirer le meilleur parti de l'utilisation de Python, avec:

  • Shells Python puissants (terminaux et basés sur Qt).
  • Un bloc-notes basé sur le Web avec les mêmes fonctionnalités de base mais prenant en charge le code, le texte, les expressions mathématiques, les tracés en ligne et d'autres médias riches.
  • Prise en charge de la visualisation interactive des données et de l'utilisation des boîtes à outils GUI.
  • Interprètes flexibles et intégrables à charger dans vos propres projets.
  • Outils faciles à utiliser et hautes performances pour le calcul parallèle.

Notez que les 2 premières lignes vous indiquent que cela vous aide à tirer le meilleur parti de l'utilisation de Python. Ainsi, vous n'avez pas besoin de modifier votre code, le shell IPython exécute votre code python comme le fait le shell python normal, mais avec plus de fonctionnalités.

Je recommande de lire le tutoriel IPython pour avoir une idée des fonctionnalités que vous gagnez en utilisant IPython.


8
Thus, you don't need to alter your code, the IPython shell runs your python code just like the normal python shell doesMerci. C'est tout ce que j'avais besoin de savoir.
Asdfsdjlka Asdfsdjlka

Pouvez-vous donner quelques commentaires sur la vitesse d'exécution d'ipython vs python? Je veux dire pur ipython, pas un bloc-notes ipython qui impliquerait un navigateur.
Jason

2
@Jason: c'est exactement la même boucle d'évaluation. Il peut y avoir des frais généraux dans la couche de présentation (analyse des commandes ipython, jolie impression de la sortie d'expression), mais c'est tout un coût constant. Donc, fondamentalement, très, très peu de différence.
Martijn Pieters

19

IPython est fondamentalement le shell Python "recommandé", qui fournit des fonctionnalités supplémentaires. Il n'y a pas de langage appelé IPython.


IPython est-il juste le REPL ??
M. Suryaa Jha

@ Mr.SuryaaJha C'est un REPL, mais il y a aussi juste le standard REPL en python (ce que vous obtenez lorsque vous tapez pythondans un shell).
BallpointBen

16

Même après avoir vu ce fil, j'avais pensé qu'ipython était un synonyme du shell python, en d'autres termes que taper python sur la ligne de commande en mettait un en mode ipython.

Il s'agit en fait, comme mentionné ci-dessus, d'un shell interactif très cool (programme en ligne de commande) qui peut être installé depuis iPython.org ou simplement en exécutant

pip install ipython

ou le plus étendu:

pip install ipython[notebook]

à partir de la ligne de commande.


1
Bon point, @Roadowl Je suppose que dire "shell interactif" est un peu redondant n'est-ce pas.
MikeiLL

@Roadowl: (un an plus tard, mais quand même ...) Que diriez-vous d'un shell exécutant un script de manière non interactive? Peut-être un exemple simple: $ sh -c 'foobar=3.14159'... ou peut-être ai-je mal compris votre commentaire.
Cbhihe

12

IPython est un puissant interprète interactif Python qui est plus interactif que l'interpréteur standard.

Pour obtenir l'interpréteur Python standard que vous tapez pythonet vous obtiendrez l' >>>invite d'où vous pouvez travailler.

Pour obtenir l'interpréteur IPython, vous devez d'abord l'installer. pip install ipython. Vous tapez ipythonet vous obtenez In [1]:une invite et vous obtenez In [2]:pour la commande suivante. Vous pouvez appeler historypour vérifier la liste des commandes précédentes et écrire %recall 1pour rappeler la commande.

Même si vous êtes en Python, vous pouvez exécuter des commandes shell directement comme !ping www.google.com. Ressemble à un carnet Jupiter en ligne de commande si vous l'avez déjà utilisé.

Vous pouvez utiliser la [Tab]saisie semi-automatique comme indiqué dans l'image. entrez la description de l'image ici


6

Il y a peu de différences entre Python et IPython mais ce ne sont que l'interprétation de quelques syntaxes comme celles mentionnées par @Ryan Chase mais au plus profond de la vraie saveur de Python est maintenue même dans Ipython.

La meilleure partie de l'IPython est le bloc-notes IPython. Vous pouvez mettre tout votre travail dans un cahier comme un script, des fichiers image, etc. Mais avec Python de base, vous ne pouvez créer le script que dans un fichier et l'exécuter.

Au début, vous devez comprendre que l'IPython est développé avec l'intention de prendre en charge les médias riches et le script Python dans un seul conteneur intégré.


6

Comparé à Python, IPython (créé par Fernando Perez en 2001) peut faire tout ce que python peut faire. Ipython fournit même des fonctionnalités supplémentaires comme la complétion de tabulation, les tests, le débogage, les appels système et de nombreuses autres fonctionnalités. Vous pouvez penser IPython comme une interface puissante pour le langage Python.

Vous pouvez installer Ipython en utilisant pip -pip install ipython

Vous pouvez exécuter Ipython en tapant ipythondans votre fenêtre de terminal.


2

D'après mon expérience, j'ai constaté que certaines commandes qui s'exécutent en IPython ne s'exécutent pas en Python de base. Par exemple, pwdet lsne travaillez pas seul dans Python de base. Cependant, ils fonctionneront s'ils sont précédés d'un %tel que: %pwdet %ls.

En outre, dans IPython, vous pouvez exécuter la commande cd comme: cd C:\Users\... Cela ne semble pas fonctionner en python de base, même s'il est préfacé par un %cependant.


3
import os; os.system('pwd')est la façon dont je le fais en Python.
Tous les

2
Toutes les %commandes sont des commandes ipython et ne fonctionnent pas dans une session interactive Python standard. Cela comprend %pwdet %ls. Le %préfixe est facultatif et n'est requis que lorsqu'il n'y a pas de conflit avec un global Python dans votre session en cours.
Martijn Pieters
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.