Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah `__import__` dan `importlib.import_module` Berbeza Apabila Mengimport Modul daripada Strings dalam Python?

Bagaimanakah `__import__` dan `importlib.import_module` Berbeza Apabila Mengimport Modul daripada Strings dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 09:08:15197semak imbas

How Do `__import__` and `importlib.import_module` Differ When Importing Modules from Strings in Python?

Hasil Berbeza Menggunakan "__import__" dan Pernyataan Import untuk Mengimport Modul daripada Rentetan

Apabila bekerja dengan perpustakaan bersarang, tugas biasa ialah mengimport submodul secara dinamik menggunakan pembolehubah rentetan sebagai laluan import. Walau bagaimanapun, fungsi "__import__" boleh menghasilkan hasil yang berbeza berbanding dengan pernyataan import biasa.

Dalam contoh anda, apabila menggunakan "__import__" tanpa menyatakan argumen "fromlist":

i = __import__('matplotlib.text')

modul i yang diimport termasuk kedua-dua modul matplotlib asas dan sesuatu tambahan. Untuk mengimport submodul matplotlib.text secara khusus, anda boleh mengubah suai kod kepada:

i = __import__('matplotlib.text', fromlist=[''])

Dalam Python 3.1 atau lebih baru, anda juga boleh menggunakan modul importlib:

import importlib

i = importlib.import_module("matplotlib.text")

Berikut ialah beberapa nota tambahan untuk dipertimbangkan:

  • Untuk mengimport modul daripada sub-folder, laluan import hendaklah ditentukan dengan sewajarnya. Contohnya, untuk mengimport email.py daripada subfolder ciri, gunakan:
importlib.import_module("feature.email")
  • Sebelum Python 3.3, fail __init__.py diwajibkan dalam folder yang mengandungi modul yang diimport. Ini tidak lagi diperlukan sejak Python 3.3.

Atas ialah kandungan terperinci Bagaimanakah `__import__` dan `importlib.import_module` Berbeza Apabila Mengimport Modul daripada Strings dalam Python?. 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
Artikel sebelumnya:Beberapa struktur QtGuiArtikel seterusnya:Beberapa struktur QtGui