Gründe für import innerhalb Funktion?

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
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ein dritter Grund waeren noch (optionale) Abhaengigkeiten die nur durch selten benutzte Features benoetigt werden.
Benutzeravatar
kbr
User
Beiträge: 1510
Registriert: Mittwoch 15. Oktober 2008, 09:27

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.
Antworten