6 Stimmen

Was sind die Anforderungen für die Benennung von Python-Modulen?

Ich habe mir Learn Python The Hard Way als eine Art Auffrischung angesehen. Anstatt jedes Beispiel ex#.py zu benennen (wo # die Nummer der Übung ist), nannte ich sie jedoch einfach #.py. Das hat gut funktioniert, bis ich zu Übung 25 kam, bei der Sie ein Modul importieren müssen, das Sie gerade über den Interpreter erstellt haben. Wenn ich das versuche, passiert Folgendes:

>>> import 25
  File "", line 1
    import 25
            ^

SyntaxError: invalid syntax

Ich habe versucht, die Datei in ex25.py umzubenennen, und dann hat es wie erwartet funktioniert (>>> import ex25). Ich frage mich, welche Namensanforderungen es für Python-Module gibt. Ich habe mir die offizielle Dokumentation hier angesehen, aber habe keine Einschränkungen bemerkt.

Bearbeitet: Alle drei Antworten von iCodez, Pavel und BrenBarn bieten gute Ressourcen und helfen dabei, verschiedene Aspekte dieser Frage zu beantworten. Letztendlich habe ich iCodez' Antwort als die richtige ausgewählt, einfach weil sie die erste Antwort war.

11voto

Module, die Sie mit dem import Statement importieren, müssen die gleichen Namensregeln einhalten, die für Variablennamen (Bezeichner) festgelegt sind. Speziell müssen sie mit einem Buchstaben1 oder einem Unterstrich beginnen und dann ausschließlich aus Buchstaben, Zahlen2 und/oder Unterstrichen bestehen.

Sie könnten auch daran interessiert sein, was PEP 8, der offizielle Style-Guide für Python-Code, über Modulnamen zu sagen hat:

Module sollten kurze, ganz in Kleinbuchstaben geschriebene Namen haben. Unterstriche können im Modulnamen verwendet werden, wenn dies die Lesbarkeit verbessert. Python-Pakete sollten auch kurze, ganz in Kleinbuchstaben geschriebene Namen haben, obwohl die Verwendung von Unterstrichen nicht empfohlen wird.


<sup>1</sup> Buchstaben sind die ASCII-Zeichen <code>A-Z</code> und <code>a-z</code>.
<sup>2</sup> Zahlen sind die ASCII-Zeichen <code>0-9</code>.

4voto

Pavel Punkte 7276

Die expliziten Regeln dafür, was als gültiger Bezeichner (Variable, Modulname usw.) zulässig ist, finden Sie hier: https://docs.python.org/dev/reference/lexical_analysis.html#identifiers

In Ihrem Fall lautet der relevante Satz:

Innerhalb des ASCII-Bereichs (U+0001..U+007F) sind die gültigen Zeichen für Bezeichner dieselben wie in Python 2.x: die Groß- und Kleinbuchstaben A bis Z, der Unterstrich _ und, außer dem ersten Zeichen, die Ziffern 0 bis 9.

3voto

BrenBarn Punkte 228691

Im strengen Sinne kannst du eine Python-Datei beliebig benennen. Allerdings muss der Dateiname, um ihn mit dem import-Statement zu importieren, ein gültiger Python-Identifier sein --- also etwas, das du als Variablennamen verwenden könntest. Das bedeutet, er darf nur aus alphanumerischen Zeichen und Unterstrichen bestehen und darf nicht mit einer Ziffer beginnen. Dies liegt daran, dass die Grammatik des import-Statements verlangt, dass der Modulname ein Identifier ist.

Deshalb hast du das Problem erst bemerkt, als du eine Übung machtest, die einen Import erfordert. Du kannst ein Python-Skript mit einem numerischen Namen von der Befehlszeile ausführen mit python 123.py, aber du wirst dieses Modul nicht importieren können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X