Python (bahasa pemrograman)
Python adalah bahasa pemrograman tujuan umum yang ditafsirkan, tingkat tinggi. Dibuat oleh Guido van Rossum dan pertama kali dirilis pada tahun 1991, filosofi desain Python menekankan keterbacaan kode dengan penggunaan spasi putih yang signifikan. Konstruksi bahasanya dan pendekatan berorientasi objek bertujuan untuk membantu pemrogram menulis kode yang jelas dan logis untuk proyek skala kecil dan besar.[28]
Python | |
---|---|
Paradigma | Multi-paradigma: fungsional, imperatif, berorientasi objek, terstruktur, reflektif |
Dirancang oleh | Guido van Rossum |
Pengembang | Python Software Foundation |
Rilis perdana | 1990[1] |
Rilis stabil | 3.10.0
/ 4 Oktober 2021[2] |
Rilis pratayang | 3.11.0a1
/ 5 Oktober 2021[3] |
Tipe sistem | Duck, dynamic, gradual (sejak 3.5)[4] |
Sistem operasi | Linux, macOS, Windows Vista (dan yang terbaru) dan banyak lagi |
Lisensi | Python Software Foundation License |
Ekstensi nama berkas | .py, .pyi, .pyc, .pyd, .pyo (sebelum 3.5),[5] .pyw, .pyz (sejak 3.5)[6] |
Situs web | www |
Repositori | www |
Implementasi utama | |
Dialek | |
Cython, RPython, Starlark[7] | |
Terpengaruh oleh | |
ABC,[8] Ada,[9] ALGOL 68,[10] APL,[11] C,[12] C++,[13] CLU,[14] Dylan,[15] Haskell,[16] Icon,[17] Java,[18] Lisp,[19] Modula-3,[13] Perl, Standard ML[11] | |
Mempengaruhi | |
Apache Groovy, Boo, Cobra, CoffeeScript,[20] D, F#, Genie,[21] Go, JavaScript,[22][23] Julia,[24] Nim, Ring,[25] Ruby,[26] Swift[27] | |
Sunting kotak info • L • B |
Python diketik secara dinamis dan pengumpulan sampah. Ini mendukung beberapa paradigma pemrograman, termasuk pemrograman terstruktur (terutama, prosedural), berorientasi objek, dan fungsional. Python sering dideskripsikan sebagai bahasa "termasuk baterai" karena perpustakaan standarnya yang komprehensif.[29]
Python dibuat pada akhir 1980-an sebagai penerus bahasa ABC. Python 2.0, dirilis pada tahun 2000, memperkenalkan fitur-fitur seperti pemahaman daftar dan sistem pengumpulan sampah dengan penghitungan referensi.
Python 3.0, dirilis pada tahun 2008, adalah revisi utama dari bahasa yang tidak sepenuhnya kompatibel dengan versi sebelumnya, dan banyak kode Python 2 yang tidak berjalan tanpa modifikasi pada Python 3.
Penerjemah Python tersedia untuk banyak sistem operasi. Komunitas pemrogram global mengembangkan dan memelihara CPython, implementasi referensi[30] yang bebas dan sumber terbuka. Sebuah organisasi nirlaba, Python Software Foundation, mengelola dan mengarahkan sumber daya untuk pengembangan Python dan CPython.
Sejarah
Python dibuat pada akhir 1980-an[31] oleh Guido van Rossum di Centrum Wiskunde & Informatica (CWI) di Belanda sebagai penerus bahasa ABC (sendiri terinspirasi oleh SETL),[32] mampu menangani pengecualian dan berinteraksi dengan sistem operasi Amoeba.[33] Implementasinya dimulai pada bulan Desember 1989.[34] Van Rossum memikul tanggung jawab penuh atas proyek tersebut, sebagai pengembang utama, hingga 12 Juli 2018, ketika ia mengumumkan "liburan permanen" dari tanggung jawabnya sebagai Benevolent Dictator For Life Python, sebuah gelar yang diberikan komunitas Python kepadanya untuk mencerminkan komitmen jangka panjangnya sebagai pengambil keputusan utama proyek.[35]
Python 2.0 dirilis pada 16 Oktober 2000 dengan banyak fitur utama baru, termasuk pengumpul sampah pendeteksian siklus dan dukungan untuk Unicode.[36]
Tanggal akhir masa pakai Python 2.7 yang awalnya ditetapkan pada tahun 2015 kemudian ditunda hingga tahun 2020 karena sejumlah besar kode yang tidak dapat dengan mudah dilanjutkan ke Python 3.[37]
Fitur dan filosofi
Python adalah bahasa pemrograman multi-paradigma. Pemrograman berorientasi objek dan pemrograman terstruktur juga didukung penuh, dan banyak fiturnya mendukung pemrograman fungsional dan pemrograman berorientasi aspek (termasuk dengan metaprogramming[38] dan metaobjects (metode ajaib)).[39] Banyak paradigma lain yang didukung melalui ekstensi, termasuk desain berdasarkan kontrak[40] dan pemrograman logika.[41]
Desain Python menawarkan beberapa dukungan untuk pemrograman fungsional dalam tradisi Lisp. Memiliki fungsi filter
, map
, dan reduce
;daftar pemahaman, kamus, set, dan ekspresi generator.[42] Pustaka standar memiliki dua modul (itertools dan functools) yang mengimplementasikan alat fungsional yang dipinjam dari Haskell dan Standard ML.[43]
Filosofi inti bahasa diringkas dalam dokumen The Zen of Python (PEP 20), yang mencakup kata-kata mutiara seperti:[44]
- Cantik itu lebih baik dari pada jelek.
- Eksplisit lebih baik daripada implisit.
- Sederhana lebih baik daripada kompleks.
- Kompleks lebih baik daripada rumit.
- Keterbacaan itu penting.
Daripada memiliki semua fungsionalitas yang dibangun ke dalam intinya, Python dirancang untuk menjadi sangat dapat dikembangkan. Modularitas yang ringkas ini membuatnya sangat populer sebagai sarana untuk menambahkan antarmuka yang dapat diprogram ke aplikasi yang ada. Visi Van Rossum tentang bahasa inti kecil dengan perpustakaan standar yang besar dan penerjemah yang mudah diperluas berasal dari rasa frustrasinya dengan ABC, yang mendukung pendekatan yang berlawanan.[31]
Sintaks dan semantik
Python dimaksudkan sebagai bahasa yang mudah dibaca. Pemformatannya tidak berantakan secara visual, dan sering kali menggunakan kata kunci bahasa Inggris di mana bahasa lain menggunakan tanda baca. Tidak seperti banyak bahasa lain, ia tidak menggunakan tanda kurung awal untuk membatasi blok, dan pernyataan titik koma setelahnya bersifat opsional. Ini memiliki lebih sedikit pengecualian sintaksis dan kasus khusus daripada C atau Pascal.[45]
indentasi
Python menggunakan indentasi spasi, daripada tanda kurung kurawal atau kata kunci, untuk membatasi blok. Peningkatan indentasi muncul setelah pernyataan tertentu; penurunan indentasi menandakan akhir dari blok saat ini.[46] Dengan demikian, struktur visual program secara akurat mewakili struktur semantik program.[1] Fitur ini terkadang disebut aturan off-side, yang dimiliki beberapa bahasa lain, tetapi di sebagian besar bahasa indentasi tidak memiliki arti semantik.
Pernyataan dan aliran kontrol
Penetapan nilai yang sama secara berurutan ke beberapa nama, misalnya, x=2
; y=2
; z=2
menghasilkan pengalokasian penyimpanan ke (paling banyak) tiga nama dan satu objek numerik, yang ketiganya terikat. Karena nama adalah pemegang referensi umum, tidak masuk akal untuk mengasosiasikan tipe data tetap dengannya. Namun pada waktu tertentu sebuah nama akan terikat ke suatu objek, yang akan memiliki tipe; jadi ada pengetikan dinamis.
- Pernyataan
if
, yang secara kondisional mengeksekusi blok kode, bersama denganelse
danelif
(sebuah kontraksi dari else-if). - Pernyataan
for
yang melakukan iterasi pada objek yang dapat diulang, menangkap setiap elemen ke variabel lokal untuk digunakan oleh blok terlampir. - Pernyataan
while
yang mengeksekusi sebuah blok kode selama kondisinya benar. - Pernyataan
try
yang memungkinkan pengecualian yang dimunculkan dalam blok kode terlampir untuk ditangkap dan ditangani olehexcept
klausul; itu juga memastikan bahwa kode-pembersihan dalam file blokfinally
akan selalu berjalan terlepas dari bagaimana blok keluar. - Pernyataan
raise
digunakan untuk memunculkan pengecualian tertentu atau memunculkan kembali pengecualian yang tertangkap. - Pernyataan
class
yang mengeksekusi blok kode dan menempelkan namespace lokalnya ke class, untuk digunakan dalam pemrograman berorientasi objek. - Pernyataan
def
yang mendefinisikan fungsi atau metode. - Pernyataan
with
dari Python 2.5 dirilis pada September 2006,[47] yang membungkus blok kode dalam manajer konteks (misalnya, memperoleh kunci sebelum blok kode dijalankan dan melepaskan kunci setelahnya, atau membuka file dan kemudian menutupnya), memungkinkan perilaku seperti Resource Acquisition Is Initialization (RAII) dan menggantikan idiom percobaan / akhirnya yang umum.[48] - Pernyataan
break
keluar dari loop. - Pernyataan
continue
melewati iterasi ini dan melanjutkan dengan item berikutnya. - Pernyataan
pass
yang berfungsi sebagai NOP. Ini secara sintaksis diperlukan untuk membuat blok kode kosong. - Pernyataan
assert
digunakan selama debugging untuk memeriksa kondisi yang seharusnya diterapkan. - Pernyataan
yield
yang mengembalikan nilai dari fungsi generator. Dari Python 2.5,yield
juga seorang operator. Formulir ini digunakan untuk mengimplementasikan coroutine. - Pernyataan
import
, yang digunakan untuk mengimpor modul yang fungsi atau variabelnya dapat digunakan dalam program saat ini. Ada tiga cara menggunakan import:import <nama modul> [sebagai <alias>]
ataufrom <nama modul> import *
ataufrom <nama modul> import <definisi 1> [sebagai <alias 1>], <definisi 2> [sebagai <alias 2>], ...
. - Pernyataan
print
diubah menjadi fungsiprint()
dengan Python 3.
Metode
Metode pada objek adalah fungsi yang dilampirkan ke kelas objek; sintaks instance.method(argument)
adalah, untuk metode dan fungsi normal, gula sintaksis untuk Class.method(instance, argument)
. Metode Python memiliki explisit self
parameter untuk mengakses data instance, berbeda dengan yang tersirat self
(atau this
) dalam beberapa bahasa pemrograman berorientasi objek lainnya (mis., C++, Java, Objective-C, atau Ruby).[49]
Penulisan
Python menggunakan duck typing dan memiliki objek yang diketik tetapi nama variabel yang tidak diketik. Batasan jenis tidak diperiksa pada waktu kompilasi; sebaliknya, operasi pada suatu objek mungkin gagal, menandakan bahwa objek yang diberikan bukan tipe yang sesuai. Meskipun diketik secara dinamis, Python diketik dengan kuat, melarang operasi yang tidak terdefinisi dengan baik (misalnya, menambahkan angka ke string) daripada secara diam-diam mencoba memahaminya.
Python memungkinkan pemrogram untuk menentukan tipe mereka sendiri menggunakan kelas, yang paling sering digunakan untuk pemrograman berorientasi objek. Contoh instance baru dibangun dengan memanggil kelas (misalnya, SpamClass()
atauEggsClass()
), dan kelas-kelasnya adalah instance dari metaclass type
(itu sendiri merupakan contoh dari dirinya sendiri), memungkinkan metaprogramming dan refleksi.
Contoh pemrograman Python
Program Halo Dunia:
print('Hello, world!')
Program untuk menghitung faktorial dari bilangan bulat positif:
n = int(input('Ketik sebuah angka, dan faktorialnya akan diprinted: '))
if n < 0:
raise ValueError('Anda harus memasukkan bilangan bulat bukan negatif')
fact = 1
for i in range(2, n + 1):
fact *= i
print(fact)
Contoh kelas dalam bahasa pemrograman Python:
class Orang:
def __init__(self, nama):
self.nama = nama
def tampilkan_nama(self):
return self.nama
orang = Orang("Wikipedia") # Initialisasi object
print(orang.tampilkan_nama()) # Output: Wikipedia
Pustaka
Pustaka standar Python yang besar, biasanya disebut sebagai salah satu kekuatan terbesarnya,[50] menyediakan alat yang cocok untuk banyak tugas. Untuk aplikasi yang terhubung ke Internet, banyak format dan protokol standar seperti MIME dan HTTP didukung. Ini mencakup modul untuk membuat antarmuka pengguna grafis, menghubungkan ke database relasional, menghasilkan nomor pseudorandom, aritmatika dengan desimal presisi sewenang-wenang,[51] memanipulasi ekspresi reguler, dan pengujian unit.
Beberapa bagian dari pustaka standar dicakup oleh spesifikasi (misalnya, implementasi Web Server Gateway Interface (WSGI) wsgiref
mengikuti PEP 333[52]), tetapi kebanyakan modul tidak. Mereka ditentukan oleh kode, dokumentasi internal, dan test suites mereka. Namun, karena sebagian besar pustaka standar adalah kode Python lintas platform, hanya beberapa modul yang perlu diubah atau ditulis ulang untuk implementasi varian.
Mulai November 2019, Python Package Index (PyPI), repositori resmi untuk perangkat lunak Python pihak ketiga, berisi lebih dari 200.000[53] paket dengan berbagai fungsi, termasuk:
Lingkungan pengembangan
Sebagian besar implementasi Python (termasuk CPython) menyertakan read–eval–print loop (REPL), yang memungkinkan mereka berfungsi sebagai penerjemah baris perintah di mana pengguna memasukkan pernyataan secara berurutan dan menerima hasil dengan segera.
Shell lain, termasuk IDLE dan IPython, menambahkan kemampuan lebih lanjut seperti penyelesaian otomatis yang ditingkatkan, retensi status sesi, dan Syntax highlighting.
Selain integrated development environments desktop standar, ada IDE berbasis peramban Web; SageMath (dimaksudkan untuk mengembangkan program Python yang berhubungan dengan sains dan matematika); PythonAnywhere, IDE berbasis browser dan lingkungan hosting; dan Canopy IDE, IDE Python komersial yang menekankan komputasi ilmiah.[55]
Generator dokumentasi API
Generator dokumentasi Python API meliputi:
Konferensi Pengembang
Konferensi pengembang Python di Indonesia (PyCon Indonesia[56]) dilaksanakan sejak tahun 2017, berlangsung setiap tahun.
Berikut tema dan lokasi konferensi pengembang Python Indonesia:
- Tahun 2017 di Surabaya dengan tema "A New Beginning"
- Tahun 2018 di Jakarta dengan tema "Python for Everyone"
- Tahun 2019 di Surabaya dengan tema "The Beauty of Python"
- Tahun 2020 secara daring dengan tema "Connect - Collab - Contribute"
Ini adalah kegiatan yang dilaksanakan oleh komunitas Python Indonesia.
Lihat pula
- Jython (java)
- PyPy
- IronPython (dotnet)
Referensi
- ^ a b Guttag, John V. (2016-08-12). Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press. ISBN 978-0-262-52962-4.
- ^ "Python 3.10.0". Python.org. 4 Oktober 2021. Diakses tanggal 10 Oktober 2021.
- ^ "Python 3.11.0a1". Python.org. 5 Oktober 2021. Diakses tanggal 10 Oktober 2021.
- ^ "PEP 483 -- The Theory of Type Hints". Python.org.
- ^ File extension .pyo was removed in Python 3.5. See PEP 0488
- ^ Holth, Moore (30 March 2014). "PEP 0441 -- Improving Python ZIP Application Support". Diakses tanggal 12 November 2015.
- ^ "Starlark Language". Diakses tanggal 25 May 2019.
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamafaq-created
- ^ "Ada 83 Reference Manual (raise statement)".
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernama98-interview
- ^ a b "itertools — Functions creating iterators for efficient looping — Python 3.7.1 documentation". docs.python.org.
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-1
- ^ a b Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaclassmix
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaeffbot-call-by-object
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-2
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-3
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-4
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-5
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-6
- ^ "CoffeeScript". coffeescript.org.
- ^ "The Genie Programming Language Tutorial". Diakses tanggal 28 February 2020.
- ^ "Perl and Python influences in JavaScript". www.2ality.com. 24 February 2013. Diakses tanggal 15 May 2015.
- ^ Rauschmayer, Axel. "Chapter 3: The Nature of JavaScript; Influences". O'Reilly, Speaking JavaScript. Diakses tanggal 15 May 2015.
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaJulia
- ^ Ring Team (4 December 2017). "Ring and other languages". ring-lang.net. ring-lang.
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamabini
- ^ Lattner, Chris (3 June 2014). "Chris Lattner's Homepage". Chris Lattner. Diakses tanggal 3 June 2014.
The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
- ^ "A Python Book: Beginning Python, Advanced Python, and Python Exercises". web.archive.org. 2012-06-23. Diakses tanggal 2020-08-11.
- ^ "Welcome to Python.org". Python.org (dalam bahasa Inggris). Diakses tanggal 2020-08-11.
- ^ "History and License — Python 3.8.5 documentation". docs.python.org. Diakses tanggal 2020-08-11.
- ^ a b "The Making of Python". www.artima.com. Diakses tanggal 2020-08-11.
- ^ Rossum, Guido van (2000-08-29). "[Python-Dev] SETL (was: Lukewarm about range literals)". Diakses tanggal 2020-08-11.
- ^ "General Python FAQ — Python 3.8.5 documentation". docs.python.org. Diakses tanggal 2020-08-11.
- ^ Rossum, Guido Van (2009-01-20). "The History of Python: A Brief Timeline of Python". The History of Python. Diakses tanggal 2020-08-11.
- ^ "Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life | Linux Journal". www.linuxjournal.com. Diakses tanggal 2020-08-11.
- ^ "What's New in Python 2.0 — Python 3.8.5 documentation". docs.python.org. Diakses tanggal 2020-08-11.
- ^ "PEP 466 -- Network Security Enhancements for Python 2.7.x". Python.org (dalam bahasa Inggris). Diakses tanggal 2020-08-11.
- ^ "The Cain Gang Ltd. "Python Metaclasses: Who? Why? When?" (PDF)" (PDF). web.archive.org. 2009-05-30. Diakses tanggal 2020-08-12.
- ^ "Data model — Python v3.0.1 documentation". docs.python.org. Diakses tanggal 2020-08-12.
- ^ "Contracts for Python". www.nongnu.org. Diakses tanggal 2020-08-12.
- ^ ""PyDatalog"". accounts.google.com. Diakses tanggal 2020-08-12.
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-59
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-18
- ^ "PEP 20 -- The Zen of Python". Python.org (dalam bahasa Inggris). Diakses tanggal 2020-09-24.
- ^ "General Python FAQ — Python 3.8.5 documentation". docs.python.org. Diakses tanggal 2020-08-12.
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-53
- ^ "Python 2.5 Release". Python.org.
- ^ "Highlights: Python 2.5". Python.org.
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-61
- ^ Kesalahan pengutipan: Tag
<ref>
tidak sah; tidak ditemukan teks untuk ref bernamaAutoNT-86
- ^ "PEP 327 -- Decimal Data Type". Python.org (dalam bahasa Inggris). Diakses tanggal 2020-08-11.
- ^ "PEP 333 -- Python Web Server Gateway Interface v1.0". Python.org (dalam bahasa Inggris). Diakses tanggal 2021-01-22.
- ^ "Modulecounts". www.modulecounts.com. Diakses tanggal 2020-08-19.
- ^ Ebrahim, Mokhtar (2017-12-05). "Python web scraping tutorial (with examples)". Like Geeks (dalam bahasa Inggris). Diakses tanggal 2020-08-19.
- ^ Enthought, Canopy. "Canopy". www.enthought.com. Diarsipkan dari versi asli tanggal 2017-07-15. Diakses tanggal 20 August 2016.
- ^ "PyCon Indonesia 2019". Diakses tanggal 2019-10-17.
Bacaan lanjutan
- Downey, Allen B. (May 2012). Think Python: How to Think Like a Computer Scientist (edisi ke-Version 1.6.6). ISBN 978-0-521-72596-5.
- Hamilton, Naomi (5 August 2008). "The A-Z of Programming Languages: Python". Computerworld. Diarsipkan dari versi asli tanggal 29 December 2008. Diakses tanggal 31 March 2010.
- Lutz, Mark (2013). Learning Python (edisi ke-5th). O'Reilly Media. ISBN 978-0-596-15806-4.
- Pilgrim, Mark (2004). Dive into Python . Apress. ISBN 978-1-59059-356-1.
- Pilgrim, Mark (2009). Dive into Python 3. Apress. ISBN 978-1-4302-2415-0.
- Summerfield, Mark (2009). Programming in Python 3 (edisi ke-2nd). Addison-Wesley Professional. ISBN 978-0-321-68056-3.
Pranala luar
Cari tahu mengenai Python (bahasa pemrograman) pada proyek-proyek Wikimedia lainnya: | |
Gambar dan media dari Commons | |
Kutipan dari Wikiquote | |
Buku dari Wikibuku | |
Entri basisdata #Q28865 di Wikidata |