Seite 1 von 1

Gründe für import innerhalb Funktion?

Verfasst: Dienstag 20. Oktober 2015, 18:55
von mutetella
Hallo,

immer wieder mal sehe ich `import` innerhalb von Funktionen. Momentan versuche ich zu verstehen, weshalb ranger in seiner root `__init__.py` eine Funktion `main` importiert, innerhalb derer sich dann diverse `import` Anweisungen befinden.

Könnte es damit zusammenhängen, dass `ranger` auch ohne Installation ins `dist-packages` Verzeichnis lauffähig sein soll? Leuchtet mir überhaupt nicht ein, ist aber meine einzige Vermutung... :|

Welche Gründe könnte es also geben, dass jemand sowas macht?

mutetella

Re: Gründe für import innerhalb Funktion?

Verfasst: Dienstag 20. Oktober 2015, 21:51
von BlackJack
@mutetella: Mir fallen eigentlich nur zwei Gründe ein: Ein sehr teurer import der sehr wahrscheinlich in den meisten Programmläufen nicht ausgeführt wird weil die Funktion nicht aufgerufen wird. Und Probleme umgehen die durch zirkuläre Importe entstehen. Ersteres ist selten, letzteres sollte selten sein. In `ranger` wird ja offenbar in jeder Funktion importiert was diese Funktion benötigt. Dafür gibt's keinen Grund.

Re: Gründe für import innerhalb Funktion?

Verfasst: Dienstag 20. Oktober 2015, 22:26
von cofi
Ein dritter Grund waeren noch (optionale) Abhaengigkeiten die nur durch selten benutzte Features benoetigt werden.

Re: Gründe für import innerhalb Funktion?

Verfasst: Mittwoch 21. Oktober 2015, 10:36
von kbr
Ein weiterer Grund wären Importe, die nur zu Testzwecken ausgeführt werden; beispielsweise nach '__name__ == "__main__"'. Aber auch dies ist bei 'ranger' nicht der Fall.