Apakah ada cara untuk melihat bagaimana fungsi yang dibangun di dalam python? Maksud saya bukan hanya bagaimana menggunakannya, tetapi juga bagaimana mereka dibangun, apa kode di balik diurutkan atau menghitung dll ...?
sumber
Apakah ada cara untuk melihat bagaimana fungsi yang dibangun di dalam python? Maksud saya bukan hanya bagaimana menggunakannya, tetapi juga bagaimana mereka dibangun, apa kode di balik diurutkan atau menghitung dll ...?
Karena Python adalah open source, Anda dapat membaca kode sumber .
Untuk mengetahui file apa modul atau fungsi tertentu diimplementasikan di Anda biasanya dapat mencetak __file__
atribut. Sebagai alternatif, Anda dapat menggunakan inspect
modul, lihat bagian Mengambil Kode Sumber dalam dokumentasi inspect
.
Untuk kelas dan metode bawaan, ini tidak semudah itu inspect.getfile
dan inspect.getsource
akan mengembalikan kesalahan tipe yang menyatakan bahwa objek tersebut built-in. Namun, banyak tipe bawaan dapat ditemukan di Objects
sub-direktori dari trunk sumber Python . Sebagai contoh, lihat di sini untuk implementasi kelas enumerate atau di sini untuk implementasi list
tipe.
enumerate
?sorted()
ada di /Python/bltinmodule.c meskipun hanya memanggilnyalist.sort()
sehingga sumber aslinya ada di /Objects/listobject.cBerikut ini adalah jawaban dari buku resep untuk melengkapi jawaban @Chris, CPython telah pindah ke GitHub dan repositori Mercurial tidak akan lagi diperbarui:
git clone https://github.com/python/cpython.git
Kode akan keluar ke subdirektori bernama
cpython
->cd cpython
print()
...egrep --color=always -R 'print' | less -R
Python/bltinmodule.c
->builtin_print()
Nikmati.
sumber
Saya harus menggali sedikit untuk menemukan sumber berikut ini
Built-in Functions
karena pencarian akan menghasilkan ribuan hasil. (Semoga berhasil mencari di antara mereka untuk menemukan sumbernya)Lagi pula, semua fungsi tersebut didefinisikan dalam
bltinmodule.c
Fungsi mulai denganbuiltin_{functionname}
sumber
listobject.c
github.com/python/cpython/tree/master/ObjectsThe iPython shell membuat ini mudah:
function?
akan memberikan dokumentasi.function??
menunjukkan juga kodenya. TAPI ini hanya berfungsi untuk fungsi python murni.Kemudian Anda selalu dapat mengunduh kode sumber untuk (c) Python.
Jika Anda tertarik pada implementasi pythonic dari fungsionalitas inti, silakan lihat sumber PyPy .
sumber
2 metode,
help()
inspect
1) memeriksa:
gunakan modul inpsect untuk menjelajahi kode yang Anda inginkan ... CATATAN: Anda dapat menjelajahi kode hanya untuk paket modul (alias) yang telah Anda impor
untuk misalnya:
2) bantuan ():
Anda cukup menggunakan
help()
perintah untuk mendapatkan bantuan tentang fungsi builtin beserta kodenya.untuk eg: jika Anda ingin melihat kode untuk str (), cukup ketik -
help(str)
itu akan kembali seperti ini,
sumber
Sumber daya yang tidak dikenal adalah Panduan Pengembang Python .
Dalam (agak) masalah GH terbaru , bab baru ditambahkan untuk menjawab pertanyaan yang Anda tanyakan: Tata Letak Kode Sumber CPython . Jika sesuatu berubah, sumber daya itu juga akan diperbarui.
sumber
Seperti yang disebutkan oleh @Jim, organisasi file dijelaskan di sini . Direproduksi untuk kemudahan penemuan:
sumber