Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menyelesaikan Ketergantungan Import Pekeliling dalam Python: Perangkap Biasa

Cara Menyelesaikan Ketergantungan Import Pekeliling dalam Python: Perangkap Biasa

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 11:53:31200semak imbas

How to Resolve Circular Import Dependency in Python: A Common Pitfall

Kebergantungan Import Pekeliling: Perangkap Python Biasa

Menghadapi kebergantungan import pekeliling boleh mengecewakan, terutamanya dalam Python di mana modul sering saling bersambung. Satu contoh sedemikian berlaku apabila __init__.py pakej mengimport pakej lain, manakala fail dalam pakej kedua itu cuba mengimport yang pertama.

Pertimbangkan struktur direktori yang disediakan:

a/
    __init__.py
    b/
        __init__.py
        c/
            __init__.py
            c_file.py
        d/
            __init__.py
            d_file.py

Dalam a's __init__.py, pakej c diimport. Walau bagaimanapun, c_file.py, yang terletak dalam pakej c, cuba mengimport a.b.d. Kebergantungan bulat ini mengakibatkan ralat pada masa jalan, mendakwa bahawa b tidak wujud.

Menyelesaikan Isu

Satu penyelesaian ialah menangguhkan import. Sebagai contoh, dalam a/__init__.py, anda boleh mentakrifkan fungsi:

<code class="python">def my_function():
    from a.b.c import Blah
    return Blah()</code>

Dengan melengahkan import sehingga ia benar-benar perlu, anda mengelakkan pergantungan bulat. Walau bagaimanapun, adalah bijak untuk mempertimbangkan semula reka bentuk pakej anda. Kebergantungan sedemikian kadangkala boleh menandakan kecacatan reka bentuk atau keperluan untuk pemfaktoran semula.

Atas ialah kandungan terperinci Cara Menyelesaikan Ketergantungan Import Pekeliling dalam Python: Perangkap Biasa. 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