Hampir tidak pernah.
__import__("x").doSomething()
membutuhkan 15+ x karakter untuk merujuk ke modul dengan nama panjang x .
import x\nx.doSomething()
membutuhkan 9 + 2 * x karakter. Fungsi-fungsi ini tumpang tindih pada x = 6, jadi dibandingkan dengan cara ini, setiap modul dengan nama yang lebih panjang lebih baik digunakan __import__
, apa pun manfaat yang lebih pendek dari impor normal:
Namun, from x import*\ndoSomething()
hanya membutuhkan 14+ x karakter, jadi dibandingkan dengan impor normal, itu tidak sepadan kecuali nama modul lebih panjang dari 5 karakter:
Ini semua mengasumsikan bahwa Anda merujuk ke fungsi / kelas / apa pun hanya sekali. Jika Anda merujuknya lebih dari sekali, rumus berubah, dan versi yang terakhir mungkin menjadi pemenang. Jika Anda menggunakan sesuatu yang panjang dari modul yang diimpor beberapa kali, versi lain akan menang:
from x import y as z
memberi Anda 18+ x + y + z * ( n +1) karakter untuk n penggunaan z , yang merupakan peningkatan besar jika y besar, karena z dapat dibuat 1.
__import__
akan membantu di dalam fungsi bernama karena itu akan berada di dalam blok berlekuk. Impor akan dikenakan biaya tambahan karena ada dua baris dan menjorok ke dalam. (Itu dengan asumsi bahwa impor tidak diperbolehkan di luar fungsi.)