Setiap kali saya melakukannya from 'x' import 'y'saya bertanya-tanya mana yang dianggap sebagai 'modul' dan yang 'paket', dan mengapa itu tidak sebaliknya?
Sebagai contoh, saya berterima kasih atas pertanyaan ini, karena jawabannya singkat dan memberikan pengetahuan yang dibutuhkan secara tepat. Dokumentasinya baik-baik saja dan keren, tetapi sangat jelas dan berisi lebih banyak informasi daripada yang diminta OP, dan tentu saja lebih dari yang saya butuhkan. Saya hanya ingin jawaban untuk pertanyaan spesifik itu, dan jawaban di bawah ini tepat seperti yang saya inginkan. Banyak dari kita hanya tidak membutuhkan jawaban formal atau mendalam seperti itu.
Aha, jadi ketika Anda mengatakan bahwa nama file diperlakukan sebagai namespace, Anda akan jadi seperti ini? "mymodule.var1" untuk kasus pertama, atau "myclass.var1" untuk yang kedua?
Dark Templar
1
Tidak persis. Paket masih dianggap sebagai bagian dari namespace. Jika Anda ingin melakukan apa yang Anda katakan maka Anda perlu melakukan dari mypackage import mymodule.
Yam Marcovic
Mungkin berguna untuk menambahkan sesuatu tentang paket namespace, yang kode tidak perlu semua muncul di pohon direktori yang sama.
holdenweb
@ holdenweb Tidak pernah menggunakan mekanisme berbeda yang terlibat di sana secara langsung, jadi bukan pakar. Jika Anda memberikan penjelasan terperinci tentang itu dalam jawaban baru, saya akan merujuknya dari saya.
Yam Marcovic
Mungkin agak terlalu esoteris untuk menjadi sia-sia, kalau dipikir
Jawaban:
Modul Python hanyalah file sumber Python, yang dapat mengekspos kelas, fungsi dan variabel global.
Saat diimpor dari file sumber Python lain, nama file diperlakukan sebagai namespace.
Paket Python hanyalah sebuah direktori modul Python.
Misalnya, bayangkan pohon direktori berikut di
/usr/lib/python/site-packages
:Maka Anda akan melakukan:
atau
sumber