The panduan gaya python menyarankan untuk impor kelompok seperti ini:
Impor harus dikelompokkan dalam urutan berikut:
- impor perpustakaan standar
- impor pihak ketiga terkait
- aplikasi khusus / perpustakaan khusus impor
Namun, tidak disebutkan apa pun bagaimana dua cara impor yang berbeda harus ditata:
from foo import bar
import foo
Ada beberapa cara untuk mengurutkannya (anggap semua impor milik grup yang sama):
pertama
from..import
, laluimport
from g import gg from x import xx import abc import def import x
pertama
import
, lalufrom..import
import abc import def import x from g import gg from x import xx
urutan alfabet berdasarkan nama modul, mengabaikan jenis impor
import abc import def from g import gg import x from xx import xx
PEP8 tidak menyebutkan urutan pilihan untuk ini dan fitur "pembersihan impor" beberapa IDE mungkin hanya melakukan apa pun yang disukai pengembang.
Saya mencari PEP lain yang mengklarifikasi ini atau komentar / email yang relevan dari BDFL (atau pengembang inti Python lain). Tolong jangan posting jawaban subjektif yang menyatakan preferensi Anda sendiri.
sumber
Ctrl+F
adalah waktu yang konstan tidak peduli bagaimana Anda mengatur impor ...)Jawaban:
Impor umumnya diurutkan berdasarkan abjad dan dijelaskan di berbagai tempat di samping PEP 8.
Modul yang diurutkan berdasarkan abjad lebih cepat dibaca dan dapat dicari . Bagaimanapun python adalah tentang keterbacaan. Juga lebih mudah untuk memverifikasi bahwa ada sesuatu yang diimpor, dan menghindari duplikasi impor
Tidak ada yang tersedia di PEP 8 tentang penyortiran. Jadi semuanya tentang pilihan apa yang Anda gunakan.
Menurut beberapa referensi dari situs terkemuka dan repositori juga popularitas, pemesanan abjad adalah caranya.
untuk eg seperti ini:
ATAU
Repositori resmi Reddit juga menyatakan bahwa, Secara umum PEP-8 pemesanan impor harus digunakan. Namun ada beberapa tambahan yang ada
Referensi:
PS: utilitas isort secara otomatis mengurutkan impor Anda.
sumber
import x
danfrom y import z
pernyataan relatif satu sama lain. Saya tidak melihat jawaban untuk pertanyaan ini dalam jawaban Anda. Anda pada dasarnya menyatakan kembali bagian dari pertanyaan yang sudah menjelaskan cara pengelompokan PEP8 berdasarkan jenis impor. Jika jawaban untuk pertanyaan khusus ini ada di beberapa tautan, silakan kutip bagian yang relevan.import datetime
diikuti olehimport os
lebih sulit untuk dibaca daripadaimport os
diikuti olehimport datetime
. Dan perbedaan dalam mencari mereka yang diberikan pengurutan leksikal vs tidak diurutkan secara leksikal sangat sepele sehingga sama sekali tidak masalah bahkan dengan cara apa pun.import _tkinter
vsimport unittest
)Menurut konvensi pengkodean internal CIA (bagian dari kebocoran WikiLeaks Vault 7 ), impor python harus dikelompokkan menjadi tiga kelompok:
Impor harus dipesan secara leksikografis dalam kelompok-kelompok ini, dengan mengabaikan kasus:
sumber
from x import y
harus sebelum atau sesudahfrom y import x
- apakah itu nama modul atau impor aktual yang menentukan pesanan?PEP 8 memang tidak mengatakan apa-apa tentang itu. Tidak ada konvensi untuk poin ini, dan itu tidak berarti komunitas Python perlu mendefinisikannya secara absolut. Pilihan bisa lebih baik untuk suatu proyek tetapi yang terburuk untuk yang lain ... Ini masalah preferensi untuk ini, karena setiap solusi memiliki pro dan kontra. Tetapi jika Anda ingin mengikuti konvensi, Anda harus menghormati perintah utama yang Anda kutip:
Sebagai contoh, Google merekomendasikan di halaman ini bahwa impor harus diurutkan secara leksikografis , di setiap kategori (standar / pihak ketiga / milik Anda). Tapi di Facebook, Yahoo dan apa pun, itu mungkin konvensi lain ...
sumber
Saya sangat merekomendasikan reorder-python-import . Ini mengikuti opsi ke-2 dari jawaban yang diterima dan juga diintegrasikan ke dalam pra-komit , yang sangat membantu.
sumber
Semua
import x
pernyataan harus diurutkan berdasarkan nilaix
dan semuafrom x import y
pernyataan harus diurutkan berdasarkan nilaix
dalam urutan abjad dan kelompokfrom x import y
pernyataan yang diurutkan harus mengikuti kelompokimport x
pernyataan yang diurutkan .sumber
Saya merasa jawaban yang diterima agak terlalu bertele-tele. Inilah TLDR:
Panduan gaya kode Google
Jadi, opsi ketiga sudah benar:
sumber