Auf Skript Variablen oder Funktionen aus dem interaktivem Modus zugreifen.

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
Sinnentlehrt
User
Beiträge: 67
Registriert: Mittwoch 30. Januar 2013, 22:32

Hallo Leute,

ja die Frage ist einfach, aber mir scheint es unmöglich die richtige Frage an Google zu senden. Ich habe also eine Datei angelegt. Jetzt möcht ich eine Funktion dieser Datei aus dem Interkaktivem Modus aufrufen. Ich dachte es würde reichen den Interaktiven Modus aus dem Verzeichnis aufzurufen in dem auch die Datei steht. Dem ist aber wohl nicht so. Hatte ich schon mal gewusst wie das geht bin aber leider schon wieder über ein Jahr raus. :(

Danke für eure Hilfe,

gutschy
Du weißt das du vergessen hast einzukaufen, wenn du dich morgens mit Geschirrspülmittel duscht.
BlackJack

@Sinnentlehrt: Die Datei ist ein Modul und das musst Du importieren. Oder die Funktion aus dem Modul.
Benutzeravatar
snafu
User
Beiträge: 6871
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Einfach aus dem Verzeichnis, wo die Datei liegt, den Dateinamen ohne die Endung ".py" importieren.

Wenn deine Datei zum Beispiel "murx.py" heißt, dann wäre es ``import murx``.
Sinnentlehrt
User
Beiträge: 67
Registriert: Mittwoch 30. Januar 2013, 22:32

Danke für eure Hilfe!! Wenn man diese Frage ohne das Wort import googelt hat man ziemlich verloren.

Am leichtesten ist wohl:

Code: Alles auswählen

from murx import *
damit kann man auf die Funktionen ohne Punkt zugreifen, also ohne

Code: Alles auswählen

murx.funktion
:D
Du weißt das du vergessen hast einzukaufen, wenn du dich morgens mit Geschirrspülmittel duscht.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@Sinnentlehrt
Auf Sternchenimporte würde ich verzichten, da Du damit alle Namen des Moduls direkt in den Namensraum schreibst, von dem aus Du importierst. Damit verliert man schnell mal den Überblick, woher eine Funktion, eine Konstante etc. stammt und läuft auch Gefahr, einen Namen zu überschreiben.
Der Punktoperator macht also durchaus Sinn und sollte nicht einfach so aus Gründen der Bequemlichkeit umgangen werden. Und wenn, dann so:

Code: Alles auswählen

from murx import any_func
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
snafu
User
Beiträge: 6871
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Sinnentlehrt hat geschrieben:Wenn man diese Frage ohne das Wort import googelt hat man ziemlich verloren.
Komisch. Selbst wenn ich sehr naiv google, komme ich schnell zum Ziel. Schau mal hier.

Bei mir wird dann diese sehr ausführliche Erklärung auf deutsch zum Thema Module bzw `import` direkt als zweiter Treffer angezeigt. Diese Quelle stammt zwar von 1999, aber an der Benutzung des `import`-Statements hat sich seitdem nicht wirklich was verändert.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Sinnentlehrt hat geschrieben:Am leichtesten ist wohl:

Code: Alles auswählen

from murx import *
Leicht schon - im Sinne von "mal eben hingeschrieben ohne Nachdenken zu müssen" - aber nicht wirklich gut. Du verlierst die Kontrolle darüber, was alles im Namensraum deines Programms landet. Ein beliebtes Problem ist z.B. from os import *. Plötzlich hat man sich das open aus der Standardbibliothek mit dem open aus os überschrieben und wundert sich, warum der Code auf einmal nicht mehr so recht laufen will.

Schau dir mal an, was der Style Guide for Python Code zum Thema "Import" zu sagen hat.
Antworten