Dalam Python, pengimportan modul memainkan peranan penting dalam mengatur dan menggunakan semula kod. Walau bagaimanapun, apabila cuba mengimport submodul daripada pembolehubah rentetan menggunakan fungsi import, hasil yang membingungkan mungkin timbul.
Masalah:
Pertimbangkan kod berikut:
import matplotlib.text as text x = dir(text) i = __import__('matplotlib.text') y = dir(i) j = __import__('matplotlib') z = dir(j)
Membandingkan tiga senarai x, y dan z yang didedahkan perbezaan yang tidak dijangka. Khususnya, senarai y kekurangan maklumat tentang kelas utama daripada submodul matplotlib.text, yang terdapat dalam senarai x.
Penyelesaian:
import fungsi memerlukan pemahaman yang teliti. Dengan menambahkan hujah rentetan kosong pada parameter fromlist, kami boleh menentukan bahawa kami ingin mengimport submodul itu sendiri:
i = __import__('matplotlib.text', fromlist=[''])
Sekarang, pembolehubah i akan merujuk submodul matplotlib.text dan senarai y akan mengandungi maklumat yang dikehendaki.
Sebagai alternatif, bermula daripada Python 3.1, kita boleh menggunakan importlib pakej:
import importlib i = importlib.import_module("matplotlib.text")
Nota Tambahan:
Atas ialah kandungan terperinci Mengapakah `__import__` Gagal Mengimport Submodul Sepenuhnya dalam Python, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!