In Python müssen Bezeichner (Namen von Variablen, Funktionen, Klassen usw.) nach bestimmten Regeln definiert werden. Namen, die nicht den Regeln entsprechen, können nicht als Bezeichner verwendet werden und führen zu einem Fehler.
Hier finden Sie die folgenden Informationen.
- Zeichen, die in Bezeichnern (Namen) verwendet werden können und nicht verwendet werden dürfen
- ASCII-Zeichen
- Unicode-Zeichen
- Normalisierung (z. B. in der Mathematik)
- Prüfen, ob die Zeichenkette ein gültiger Bezeichner ist:
isidentifier()
- Wörter, die nicht als Bezeichner (Namen) verwendet werden können (reservierte Wörter)
- Wörter, die nicht als Identifikatoren (Namen) verwendet werden sollten
- Benennungskonventionen für PEP8
Die folgende Beschreibung bezieht sich auf Python 3 und kann in Python 2 anders aussehen.
- Zeichen, die in Bezeichnern (Namen) verwendet werden können und nicht verwendet werden dürfen
- Prüfen, ob der String ein gültiger Bezeichner ist: isidentifier()
- Wörter, die nicht als Bezeichner (Namen) verwendet werden können (reservierte Wörter)
- Wörter, die nicht als Identifikatoren (Namen) verwendet werden sollten
- Benennungskonventionen für PEP8
Zeichen, die in Bezeichnern (Namen) verwendet werden können und nicht verwendet werden dürfen
Gibt an, welche Zeichen als Bezeichner (Namen) verwendet werden können und welche nicht.
Darüber hinaus gibt es zwar viele Dinge, über die man schreiben kann, aber im Grunde muss man sich nur an Folgendes erinnern.
- Verwenden Sie Groß- und Kleinbuchstaben, Zahlen und Unterstriche.
- Der erste (erste) Buchstabe darf keine Zahl sein.
ASCII-Zeichen
ASCII-Zeichen, die als Bezeichner (Namen) verwendet werden können, sind Groß- und Kleinbuchstaben (A~Z,a~z), Zahlen (0~9) und Unterstriche (_). Beim Alphabet wird zwischen Groß- und Kleinschreibung unterschieden.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Andere Symbole als Unterstriche können nicht verwendet werden.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Außerdem können keine Zahlen am Anfang (erster Buchstabe) verwendet werden.
# 1_abc = 100
# SyntaxError: invalid token
Unterstriche können auch am Anfang verwendet werden.
_abc = 100
print(_abc)
# 100
Beachten Sie jedoch, dass ein Unterstrich am Anfang eine besondere Bedeutung haben kann.
Unicode-Zeichen
Seit Python 3 können auch Unicode-Zeichen verwendet werden.
変数1 = 100
print(変数1)
# 100
Nicht alle Unicode-Zeichen können verwendet werden, und je nach Unicode-Kategorie können einige nicht verwendet werden. Zum Beispiel können Symbole wie Satzzeichen und Piktogramme nicht verwendet werden.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Welche Unicode-Kategorie-Codes verwendet werden können, entnehmen Sie bitte der offiziellen Dokumentation.
In vielen Fällen ist die Verwendung chinesischer Zeichen usw. nicht von Vorteil, da auch Unicode-Zeichen (fehlerfrei) verwendet werden können.
Normalisierung (z. B. in der Mathematik)
Unicode-Zeichen werden für die Interpretation in die normalisierte Form NFKC umgewandelt. Zum Beispiel werden Alphabete mit voller Breite in Alphabete mit halber Breite (ASCII-Zeichen) umgewandelt.
Beachten Sie, dass selbst wenn der Quellcode eine andere Anzeige zeigt, diese als dasselbe Objekt betrachtet und überschrieben wird.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Prüfen, ob der String ein gültiger Bezeichner ist: isidentifier()
Ob eine Zeichenkette als Bezeichner gültig ist oder nicht, kann mit der String-Methode isidentifier() überprüft werden.
Er gibt true zurück, wenn er als Bezeichner gültig ist, und false, wenn er ungültig ist.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Wörter, die nicht als Bezeichner (Namen) verwendet werden können (reservierte Wörter)
Es gibt einige Wörter (reservierte Wörter), die nicht als Bezeichner verwendet werden können, auch wenn es sich um gültige Zeichenketten als Bezeichner (Namen) handelt.
Da ein reserviertes Wort eine gültige Zeichenkette als Bezeichner ist, gibt isidentifier() true zurück, aber ein Fehler tritt auf, wenn es als Bezeichner verwendet wird.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Um eine Liste der reservierten Wörter zu erhalten und um zu prüfen, ob eine Zeichenkette ein reserviertes Wort ist, verwenden Sie das Schlüsselwortmodul der Standardbibliothek.
Wörter, die nicht als Identifikatoren (Namen) verwendet werden sollten
Die Namen der in Python eingebauten Funktionen können z. B. als Bezeichner verwendet werden, so dass Sie ihnen neue Werte als Variablen zuweisen können.
len() ist zum Beispiel eine eingebaute Funktion, die die Anzahl der Elemente in einer Liste oder die Anzahl der Zeichen in einer Zeichenkette zurückgibt.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Wenn Sie diesem Namen len einen neuen Wert zuweisen, wird die ursprüngliche Funktion überschrieben und ist dann unbrauchbar. Beachten Sie, dass bei der Zuweisung eines neuen Wertes kein Fehler oder eine Warnung ausgegeben wird.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Ein weiterer häufiger Fehler ist die Verwendung von list = [0, 1, 2], was die Verwendung von list() unmöglich macht. Seien Sie vorsichtig.
Benennungskonventionen für PEP8
PEP steht für Python Enhancement Proposal, ein Dokument, das neue Funktionen und andere Aspekte von Python beschreibt.
PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org
PEP8 ist das achte, und es beschreibt den “Style Guide for Python Code”, also den Stil-Leitfaden für Python.
Auch die Namenskonventionen werden erwähnt.
Weitere Einzelheiten finden Sie unter dem obigen Link, aber es wird beispielsweise folgender Schreibstil empfohlen.
- Modul
lowercase_underscore
- Kleinbuchstaben + Unterstrich
- Paket
lowercase
- alle Kleinbuchstaben
- Klassen, Ausnahmen
CapitalizedWords
(CamelCase
)- Großschreibung des ersten Buchstabens eines Wortes, kein Unterstrich
- Funktionen, Variablen und Methoden
lowercase_underscore
- Kleinbuchstaben + Unterstrich
- Konstante
ALL_CAPS
- Großbuchstaben + Unterstrich
Wenn Ihre Organisation jedoch keine eigenen Namenskonventionen hat, empfiehlt es sich, PEP8 zu befolgen.