Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Import Pekeliling dalam Python Boleh Dielakkan dan Apakah Akibatnya?

Bagaimanakah Import Pekeliling dalam Python Boleh Dielakkan dan Apakah Akibatnya?

Susan Sarandon
Susan Sarandonasal
2024-12-18 05:44:14809semak imbas

How Can Circular Imports in Python Be Avoided and What Are Their Consequences?

Akibat Import Pekeliling dalam Python

Import pekeliling timbul apabila dua atau lebih modul cuba mengimport satu sama lain. Walaupun import mudah boleh berfungsi dengan lancar, isu timbul apabila modul cuba mengimport nama atau atribut tertentu daripada modul lain yang juga cuba mengimport daripadanya.

Masalah: Import Pekeliling Langsung

Secara langsung import pekeliling, modul cuba mengimport satu sama lain secara keseluruhan menggunakan penyata import langsung. Contohnya:

# foo.py
import bar

# bar.py
import foo

Pada mulanya, kedua-dua modul dimuatkan tanpa masalah. Walau bagaimanapun, jika satu modul cuba mengakses nama yang memerlukan modul lain dimuatkan sepenuhnya, ralat masa jalan boleh berlaku.

Penyelesaian: Import Pekeliling Tidak Langsung

Untuk mengelakkan ralat masa jalan, gunakan import tidak langsung, di mana modul mengimport atribut atau nama khusus dan bukannya keseluruhan modul. Contohnya:

# foo.py
from bar import xyz

# bar.py
from foo import abc

Pendekatan ini membenarkan kedua-dua modul mengimport atribut yang diperlukan tanpa memerlukannya untuk dimuatkan sepenuhnya.

Pengecualian: Python 2 dan Senario Khusus

Python 2 mempamerkan tingkah laku yang sedikit berbeza mengenai import pekeliling. Dalam senario khusus tertentu, seperti mengimport dari bahagian atas modul, tidak menggunakan "dari" dan hanya menggunakan import relatif, import pekeliling mungkin berfungsi dalam Python 2 tetapi tidak dalam Python 3.

Contoh Tambahan

Contoh berikut menggambarkan senario tambahan di mana import pekeliling dibenarkan dalam Python:

  • Bawah modul, atribut import, bukan modul; "dari" import
  • Atas fungsi; "dari" import
  • Atas modul; "dari" import okay; relatif okay; Python 3 sahaja

Atas ialah kandungan terperinci Bagaimanakah Import Pekeliling dalam Python Boleh Dielakkan dan Apakah Akibatnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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