Funktionsaufrufe externe Dateien.

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
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

Dateinamen in Unix dürfen [a-z] [A-Z] das Underscore ,den Punkt den Bindestrich enthalten.
Und dürfen länger als 8 Buchstaben sein.
Dateiname wie Erst.Dies.dann.Das.text wären legal.
Ich hab jetzt 1 Projekt bearbeitet, da kamen Importfunktionen vor.
Für mich als Pythonanfänger sind Importfunktionen (auch) benutzerdefinierte Funktionen, die in einer anderen Datei stehen und vom Python-Interpreter mit dem Schlüsselwort import
gelesen werden
Ich habe eine Funktion, die ich in der Datei eins.zwei.py abspeichern.
Wenn ich diese Datei vom Hauptprogramm aurufen lasse mit
import eins.zwei
dann kommt der Interpreter durcheinander. es wird nicht die gewünschte Funktion ( die in eins.zwei.py steht ) aufgerufen, sondern eine andere Funktion.
Ich kann das nur verhindern, indem ich den Dateinamen anders wähle.
eins_zwei.py
dann sage ich import eins_zwei
und es funktioniert.
Der Punkt in einem Dateinamen dient zum Aufruf.
Dateinamen dürfen keine Punkte enthalten.
Sehe ich das richtig?
Grüße Fritz
------------------------------
Der Interpreter legt beim ersten Durchlauf eine datei.pyc an.
Dient die Datei datei.pyc dazu, ein schnelleres Laden beim 2. mal zu ermöglichen?
ich hab mich schon öfter gewundert, wie schnell in Python script-files von 100 bis 200 k geladen werden.
Sehe ich das auch richtig?

:roll: :roll:
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Das ist ja eher eine Frage, die in den allgemeinen Bereich gehört.

Modulnamen (Module sind Python-Dateien die du iportierst) haben AFAIK die gleichen Vorschriften wie Bezeichner. Keine Zahl am Anfang, nur Unterstriche und a-zA-Z sind erlaubt. Dazu kommst noch die Erweiterung .py, .pyc, .pyo oder was es sonst noch gibt.

Warum brichst du deine Beiträge eigentlich so komisch um?
3ff hat geschrieben:Dient die Datei datei.pyc dazu, ein schnelleres Laden beim 2. mal zu ermöglichen?
Jap.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

3ff hat geschrieben:Dateinamen in Unix dürfen [a-z] [A-Z] das Underscore ,den Punkt den Bindestrich enthalten.
Eigentlich dürfen sie bis auf das Nullbyte und den Slash alle Zeichen enthalten.
3ff hat geschrieben:Ich hab jetzt 1 Projekt bearbeitet, da kamen Importfunktionen vor.
Für mich als Pythonanfänger sind Importfunktionen (auch) benutzerdefinierte Funktionen, die in einer anderen Datei stehen und vom Python-Interpreter mit dem Schlüsselwort import
gelesen werden
Was du meinst sind Module und Module sind keine benutzerdefinierten Funktionen sondern eher Namensräume. Und die Müssen sich auch an die Bezeichnerregeln von Python halten, sonst können sie nicht (ohne weiteres) mit ``import`` geladen werden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fabi1511
User
Beiträge: 23
Registriert: Donnerstag 25. Juni 2009, 18:59

Der Aufruf

Code: Alles auswählen

import eins.zwei
bewirkt, dass der Interpreter nach einem Paket mit dem Namen 'eins' und in diesem Paket nach
einem Modul (oder weiterem Paket) mit dem Namen 'zwei' sucht, da wahrscheinlich nichtmal das Paket 'eins' existiert kommt es zu einem Fehler.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Wo ist das Problem? Ein gültiger Modulname muss ein gültiger Dateiname sein, aber nicht jeder gültige Dateiname ist ein gültiger Modulname. Ein gültiger Modulname muss eben auch den Regeln für Python-Bezeichner genügen, also mit einem Buchstaben oder _ beginnen und danach nur aus Buchstaben und Ziffern oder _ bestehen.

Stefan
Antworten