Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Anda Perlu Mengelakkan `import *` dalam Python?

Mengapa Anda Perlu Mengelakkan `import *` dalam Python?

Susan Sarandon
Lepaskan: 2024-11-15 19:26:02
asal
569 orang telah melayarinya

Why Should You Avoid `import *` in Python?

Mendedahkan Rahsia Import * dalam Python

Dalam Python, perintah misteri "import *" memberikan akses yang tidak pernah berlaku sebelum ini kepada sumber modul. Ia mengimport bukan sahaja modul yang ditetapkan tetapi juga fail __init__.py yang dihargai yang berada dalam folder yang mengandungi. Akibatnya, modul __init__.py yang diberkati menjadi penting kepada ruang nama semasa.

Mengisytiharkan daripada project.model

Dengan kuasa import , keperluan untuk mengisytiharkan "daripada project.model import __init__" menyejat. Satu "from project.model import " cukup untuk merangkumi segala-galanya dalam kedua-dua modul project.model dan fail __init__.py yang suci.

Kebaikan dan Keburukan Import *

The daya tarikan import * terletak pada keupayaannya untuk mengimport semua objek bernama (kecuali yang bermula dengan garis bawah) daripada modul yang ditetapkan ke dalam ruang nama semasa. Ini membolehkan akses tanpa kerumitan kepada mana-mana objek yang diimport tanpa beban untuk meletakkan awalan namanya dengan pengecam modul.

Sebagai contoh, pertimbangkan coretan berikut:

from math import *
Salin selepas log masuk
Salin selepas log masuk

Mantra ajaib ini membolehkan kami untuk menggunakan kuasa pi dengan lancar tanpa sebarang pendahuluan perkenalan:

pi
3.141592653589793
Salin selepas log masuk

Walau bagaimanapun, kuasa import yang besar * datang pada harga. Ia menimbulkan bahaya perlanggaran ruang nama, yang berpotensi menimpa pembolehubah sedia ada dalam skop semasa. Selain itu, ia mungkin terbukti tidak cekap jika modul sasaran mempunyai banyak objek. Akhir sekali, dan mungkin yang paling penting, ia menyekat sifat pendokumentasian sendiri kod, meninggalkan asal pembolehubah, kaedah dan kelas diselubungi misteri.

Pendekatan Lebih Bersih

Oleh itu, mereka yang bijak. antara kami menyimpan import * untuk ujian ad-hoc dan memilih alternatif yang lebih jelas untuk kod pengeluaran. Satu pilihan berhemat ialah mengimport secara eksplisit objek yang dikehendaki sahaja:

from math import pi
Salin selepas log masuk

Sebagai alternatif, mengimport keseluruhan modul di bawah ruang nama yang berbeza boleh menjadi kompromi yang wajar:

import math as m
Salin selepas log masuk

Apa yang Bersembunyi dalam Import *

Untuk membongkar misteri import *, adalah penting untuk memahaminya kerja. Secara lalai, ia mengimport semua objek bernama (tidak termasuk yang bermula dengan garis bawah). Walau bagaimanapun, sekiranya modul yang ditetapkan mentakrifkan pembolehubah semua, keutamaan diberikan dan hanya nama yang disenaraikan dalam pembolehubah itu diimport.

Sub-modul dan Import *

Banyak perpustakaan Python standard disusun ke dalam sub-modul, seperti urllib.request, sambungan urllib di mana-mana. modul. Adalah penting untuk ambil perhatian bahawa import * dari urllib tidak akan masuk ke dalam dewan yang suci ini; penyata import yang berasingan diperlukan untuk mengaksesnya:

from math import *
Salin selepas log masuk
Salin selepas log masuk

Kesimpulan

Arahan import yang sederhana * menggunakan kuasa yang besar, menawarkan keupayaan untuk mengimport keseluruhan kandungan modul ke dalam ruang nama semasa. Walau bagaimanapun, ia adalah kuasa yang mesti digunakan dengan berhati-hati, supaya bahaya perlanggaran ruang nama, ketidakcekapan, dan kekurangan dokumentasi diri menjerat kita. Untuk kod pengeluaran, amalan import yang lebih eksplisit dan tersusun ialah laluan kepada ketenangan dan kejelasan.

Atas ialah kandungan terperinci Mengapa Anda Perlu Mengelakkan `import *` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan