Apa sajakah karakteristik Python yang membuatnya unik sebagai bahasanya sendiri? Saya mencari segala jenis karakteristik mulai dari yang baik hingga yang buruk, bermanfaat hingga halangan, sintaksis hingga penggunaan di dunia nyata, tetapi pengamatan yang tidak jelas akan menjadi yang paling berguna bagi pengembang rata-rata.
Saya seorang pemula di sini, jadi hal-hal intuitif mungkin perlu dijelaskan .....
Jawaban:
Anda akan kesulitan menemukan fitur yang benar-benar unik . Sebagian besar fitur bahasa yang ada telah diadopsi dalam lebih dari satu bahasa sejak awal. Beberapa mungkin lebih jarang, terutama karena mereka masih baru dan masih dalam ketidakjelasan, atau mati karena alasan yang baik. Meskipun demikian, meski begitu Anda akan lebih baik melihat kombinasi fitur.
Yang mengatakan, beberapa fitur Python harus membuat kombinasi yang relatif unik. Setidaknya saya tidak mengetahui bahasa apa pun dari jarak jauh sebagai populer (dan praktis) dengan sebagian besar fitur yang tumpang tindih. Seperti disebutkan dalam komentar, Ruby cukup dekat, tetapi ada banyak perbedaan.
attr = SomeDataType()
dan satu ton kode dihasilkan secara otomatis. Contohnya adalah "model" Django .O(1)
ruang untuk hasil antara sering mengikuti secara alami, sangat sedikit tugas yang benar-benar membutuhkan semua item dalam memori sekaligus), pengelompokan data komposit tidak pernah semudah ini.O(1)
ruang kecuali Anda secara eksplisit menjaga hasilnya di sekitar).yield
, yang terutama membuat penulisan iterator (disebut generator di sini) jauh lebih baik. Mereka adalah kakak di atas, mendukung semua jenis aliran kontrol. C # memiliki sesuatu yang mirip, dengan kata kunci yang sama. Tetapiyield
juga kelebihan beban untuk mendukung jenis coroutine yang terbatas (Lua misalnya memiliki dukungan yang lebih rumit) yang bagaimanapun telah dimanfaatkan dengan baik oleh orang-orang pintar yang bekerja pada masalah-masalah sulit. Dua contoh dari atas kepala saya: keturunan parsing rekursif dengan backtracing dan tidak ada batas stack dan I / O asinkron (dengan sintaks yang mudah digunakan).for key, value in mapping.items()
), Anda dapat membongkar semua iterable yang diketahui panjangnya (jujur, sebagian besar tuple) menjadi beberapa variabel. Sejak 3.x itu bahkan praktis untuk koleksi panjang tidak diketahui karena Anda dapat menentukan beberapa variabel mengambil item tunggal dan satu taking apapun tetap:first, *everything_in_between, last = values
.propery
objek.sumber
*args
dan**kwargs
, cara yang tidak menyakitkan untuk memetakan tupel dan mendiktekan ke parameter, dll. .Saya kira satu-satunya hal yang membuat Python unik adalah kombinasi fitur yang ditampilkannya. Ini akan berlaku untuk sebagian besar bahasa pemrograman.
Atau mungkin ada satu hal kecil: Saya belum melihat cara Python secara eksplisit melewati
self
sebagai parameter formal untuk fungsi anggota objek dilakukan dalam bahasa lain. Ini hal kecil, dan saya tidak melihat bagaimana ini benar-benar mengubah apa pun.Tapi saya tidak terlalu lancar menggunakan Python, jadi mungkin ada hal-hal yang saya lewatkan pasti!
sumber
Pemrosesan dokumen secara otomatis menjadi properti pemiliknya. Secara umum semua fitur introspeksi Python yang brilian menjadikannya bahasa yang sangat unik, dari kemampuan menggunakan bantuan () hingga kemampuan untuk digunakan
__doc__
sebagai properti kelas satu dari suatu objek. Sebagai contoh:Fitur introspeksi lain yang bermanfaat:
sumber
Generator Expressions
input()
Izinkan saya menjelaskan, saya belum melihat bahasa (sejauh ini), di mana Anda dapat memberikan nilai pada pernyataan yang mencetak sesuatu, itu seperti rubyprint/gets
, tetapi dengan nilai yang diberikan pada cetakan, alih-alih:print "Foo" bar = gets
yield
ordereddict, namedtuple, array, list, tuple, dictionary
sumber
Masalahnya, Python adalah salah satu dari sedikit bahasa dengan overhead sintaksis yang sangat rendah sehingga memberikan kekuatan ekspresif yang luar biasa: daftar / set / dikt pemahaman, hasil, dekorator, eval, pemrograman kelas meta, introspeksi, struktur data bawaan yang dioptimalkan (daftar, Dicts, set), semua itu berkonspirasi dengan cara yang sangat bagus untuk memberi Anda (pengembang) kekuatan untuk mengekspresikan pikiran Anda dalam kode yang ringkas dan elegan hampir secepat yang Anda bisa pikirkan. Saya tidak dapat benar-benar memikirkan bahasa lain dengan serangkaian fitur yang dikombinasikan ini.
sumber
Saya akan mengatakan itu menggunakan lekukan untuk melampirkan jika pernyataan dan loop. Belum melihat itu dalam bahasa lain.
Saya pikir ini sangat berguna karena membuatnya secara signifikan lebih sulit untuk mengaburkan kode python!
Tampaknya juga mengeksekusi secara rapi baris demi baris dengan pengecualian fungsi, dan itu juga dapat ditafsirkan seperti itu yang bagus.
sumber