Apa perbedaan antara Python dan IPython?

220

Apa sebenarnya perbedaan antara Python dan IPython ?

Jika saya menulis kode dengan Python, apakah itu akan berjalan di IPython apa adanya atau perlu dimodifikasi?

Saya tahu IPython seharusnya menjadi shell interaktif untuk Python, tetapi apakah hanya itu? Atau ada bahasa yang disebut IPython? Jika saya menulis sesuatu di bawah IPython, apakah itu akan berjalan dalam Python, dan sebaliknya? Jika ada perbedaan, bagaimana saya tahu mereka? Apakah semua paket yang digunakan oleh Python berfungsi seperti di IPython?

Asdfsdjlka Asdfsdjlka
sumber

Jawaban:

153

ipython adalah shell interaktif yang dibangun dengan python.

Dari situs web proyek:

IPython menyediakan toolkit kaya untuk membantu Anda memaksimalkan penggunaan Python, dengan:

  • Kerang Python yang kuat (berbasis terminal dan Qt).
  • Notebook berbasis web dengan fitur inti yang sama tetapi mendukung kode, teks, ekspresi matematis, plot sebaris, dan media kaya lainnya.
  • Dukungan untuk visualisasi data interaktif dan penggunaan toolkit GUI.
  • Penerjemah yang fleksibel dan dapat disematkan untuk dimuat ke proyek Anda sendiri.
  • Mudah digunakan, alat berkinerja tinggi untuk komputasi paralel.

Perhatikan bahwa 2 baris pertama memberi tahu Anda bahwa ini membantu Anda memaksimalkan penggunaan Python. Jadi, Anda tidak perlu mengubah kode Anda, shell IPython menjalankan kode python Anda seperti halnya shell python normal, hanya dengan lebih banyak fitur.

Saya sarankan membaca tutorial IPython untuk mengetahui fitur apa yang Anda peroleh ketika menggunakan IPython.

Martijn Pieters
sumber
8
Thus, you don't need to alter your code, the IPython shell runs your python code just like the normal python shell doesTerima kasih. Itu semua yang perlu saya ketahui.
Asdfsdjlka Asdfsdjlka
Bisakah Anda memberikan beberapa komentar pada kecepatan eksekusi ipython vs python? Maksud saya ipython murni, bukan notebook ipython yang akan melibatkan browser.
Jason
2
@Jason: ini adalah lingkaran evaluasi yang sama persis. Mungkin ada beberapa overhead di lapisan presentasi (parsing untuk perintah ipython, cukup mencetak keluaran ekspresi), tapi itu semua biaya konstan. Jadi pada dasarnya, perbedaannya sangat, sangat kecil.
Martijn Pieters
19

IPython pada dasarnya adalah shell Python "disarankan", yang menyediakan fitur tambahan. Tidak ada bahasa yang disebut IPython.

Winnie Phan
sumber
Apakah IPython hanyalah REPL ??
Tn. Suryaa Jha
@ Mr.SuryaaJha Ini adalah REPL, tetapi hanya ada REPLY python standar (apa yang Anda dapatkan ketika Anda mengetikkan pythonsebuah shell).
BallpointBen
16

Bahkan setelah melihat utas ini, saya berpikir bahwa ipython adalah sinonim untuk shell python, dengan kata lain bahwa mengetik python pada baris perintah memasukkan satu ke mode ipython.

Sebenarnya, seperti yang disebutkan di atas, shell interaktif yang sangat keren (program baris perintah) yang dapat diinstal dari iPython.org atau hanya dengan menjalankan

pip install ipython

atau lebih luas:

pip install ipython[notebook]

dari baris perintah.

MikeiLL
sumber
1
Poin bagus, @Roadowl Saya kira mengatakan "shell interaktif" agak berlebihan bukan.
MikeiLL
@Roadowl: (setahun kemudian, tapi masih ...) Bagaimana dengan shell yang menjalankan skrip dengan cara non-interaktif? Mungkin contoh sederhana: $ sh -c 'foobar=3.14159'... atau mungkin saya salah mengerti komentar saya.
Cbhihe
12

IPython adalah interpreter Python interaktif yang kuat yang lebih interaktif dibandingkan dengan interpreter standar.

Untuk mendapatkan juru bahasa Python standar, Anda mengetik pythondan Anda akan mendapatkan>>> prompt dari tempat Anda bisa bekerja.

Untuk mendapatkan juru bahasa IPython, Anda harus menginstalnya terlebih dahulu. pip install ipython. Anda mengetik ipythondan Anda dapatkan In [1]:sebagai prompt dan Anda mendapatkan In [2]:untuk perintah berikutnya. Anda dapat menelepon historyuntuk memeriksa daftar perintah sebelumnya, dan menulis %recall 1untuk memanggil kembali perintah.

Bahkan jika Anda menggunakan Python, Anda dapat menjalankan perintah shell secara langsung !ping www.google.com. Tampak seperti baris perintah notebook Jupiter jika Anda menggunakannya sebelumnya.

Anda dapat menggunakan [Tab]untuk melengkapi otomatis seperti yang ditunjukkan pada gambar. masukkan deskripsi gambar di sini

prosti
sumber
6

Ada beberapa perbedaan antara Python dan IPython tetapi mereka hanya interpretasi dari beberapa sintaksis seperti beberapa yang disebutkan oleh @Ryan Chase tetapi jauh di dalam rasa asli Python dipertahankan bahkan dalam Ipython.

Bagian terbaik dari IPython adalah notebook IPython. Anda dapat menempatkan semua pekerjaan Anda ke dalam buku catatan seperti skrip, file gambar, dll. Tetapi dengan basis Python, Anda hanya dapat membuat skrip dalam file dan menjalankannya.

Pada awalnya, Anda perlu memahami bahwa IPython dikembangkan dengan maksud mendukung media kaya dan skrip Python dalam satu wadah terintegrasi.

Abish
sumber
6

Dibandingkan dengan Python, IPython (dibuat oleh Fernando Perez pada tahun 2001) dapat melakukan segala hal yang dapat dilakukan oleh python. Ipython bahkan menyediakan fitur tambahan seperti penyelesaian tab, pengujian, debugging, panggilan sistem, dan banyak fitur lainnya. Anda dapat menganggap IPython sebagai antarmuka yang kuat untuk bahasa Python.

Anda dapat menginstal Ipython menggunakan pip -pip install ipython

Anda dapat menjalankan Ipython dengan mengetik ipythondi jendela terminal Anda.

N Randhawa
sumber
2

Dari pengalaman saya, saya telah menemukan bahwa beberapa perintah yang berjalan di IPython tidak berjalan di basis Python. Misalnya, pwddan lsjangan bekerja sendiri dalam basis Python. Namun mereka akan bekerja jika diawali dengan %seperti: %pwddan %ls.

Selain itu, di IPython, Anda dapat menjalankan perintah cd seperti: cd C:\Users\... Ini sepertinya tidak berfungsi dalam basis python, bahkan ketika diawali dengan %namun.

Ryan Chase
sumber
3
import os; os.system('pwd')adalah cara saya melakukannya dengan Python.
Semua ini
2
Semua %perintah adalah perintah ipython dan tidak berfungsi dalam sesi interaktif Python biasa. Itu termasuk %pwddan %ls. The %prefix adalah opsional dan hanya diperlukan bila tidak ada konflik dengan Python global dalam sesi Anda saat ini.
Martijn Pieters