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
Lepaskan: 2024-12-06 09:08:15
asal
228 orang telah melayarinya

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')
Salin selepas log masuk

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=[''])
Salin selepas log masuk

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

import importlib

i = importlib.import_module("matplotlib.text")
Salin selepas log masuk

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")
Salin selepas log masuk
  • 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 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