Module importieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
anonym12

Hallo,

es heißt ja immer, dass man beim importieren von Modulen möglichst präzise sein soll.
Wie weit sollte man das Spielchen treiben? Wo sind die Vor- und Nachteile?

Als Beispiel:

Code: Alles auswählen

# 1
import os.path

# 2
from os.path import isdir as os_isdir
from os.path import isfile as os_isfile
from os.path import join as os_join
from os.path import abspath as os_abspath
Bei #1 hätte ich alle Funktionen zur Verfügung, bei #2 nur die, die ich tatsächlich brauche.
Ich würde #2 bevorzugen, da ich dann explizit sehe welche Funktionen mir zur Verfügung stehen.

Allerdings stellt sich mir dabei die folgende Frage:
Bei einem Import geht der Interpreter ja den gesamten Code vom Modul einmal durch. Heißt das bei #2 geht er den gesamten Code 4x durch? Das wäre ja ziemlich redundant und würde sich (zumindest theoretisch) auf die Performance auswirken.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@August: üblicherweise importiert man nur `os` und benutzt `os.path.abspath`.
Module werden immer nur ein einziges Mal bei jedem Programmlauf geladen, also sind beide Varianten von der Performance identisch.

Insgesamt benutzt man aber os.path überhaupt nicht mehr, sondern statt dessen pathlib.Path.
Dort reicht dann

Code: Alles auswählen

from pathlib import Path
Antworten