Schlüsselwörter und integrierte Bezeichner in Python verstehen

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

In diesem Labor erhalten Sie ein grundlegendes Verständnis der reservierten Wörter und vordefinierten Namen von Python. Wir beginnen mit der Identifizierung von Python-Schlüsselwörtern, die spezielle Wörter mit spezifischen Bedeutungen sind und nicht als reguläre Bezeichner verwendet werden können. Sie lernen, wie Sie diese Schlüsselwörter mithilfe des integrierten keyword-Moduls auflisten.

Anschließend werden wir uns mit den integrierten Bezeichnern von Python befassen, einschließlich Funktionen, Objekten, Ausnahmen und Konstanten, die immer zur Verfügung stehen. Schließlich lernen Sie die wichtige Praxis kennen, sowohl Schlüsselwörter als auch integrierte Bezeichner nicht als eigene Variablen- oder Funktionsnamen zu verwenden, um Namenskonflikte zu vermeiden und sicherzustellen, dass Ihr Code korrekt funktioniert.

Python-Schlüsselwörter identifizieren

In diesem Schritt lernen wir Python-Schlüsselwörter kennen. Schlüsselwörter, auch reservierte Wörter genannt, sind spezielle Wörter, die in Python eine bestimmte Bedeutung haben und nicht als reguläre Bezeichner (wie Variablennamen, Funktionsnamen usw.) verwendet werden können.

Python stellt ein integriertes Modul namens keyword zur Verfügung, mit dem wir einfach alle Schlüsselwörter auflisten können.

Erstellen wir ein Python-Skript, um die Liste der Schlüsselwörter anzuzeigen.

Öffnen Sie das integrierte Terminal in der WebIDE, indem Sie auf Terminal -> New Terminal klicken. Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden.

Erstellen Sie nun eine neue Datei namens list_keywords.py im Verzeichnis ~/project mithilfe des WebIDE-Dateiexplorers oder indem Sie den folgenden Befehl im Terminal ausführen:

touch ~/project/list_keywords.py

Öffnen Sie die Datei list_keywords.py im WebIDE-Editor und fügen Sie den folgenden Code hinzu:

import keyword

print(keyword.kwlist)

Speichern Sie die Datei.

Führen Sie nun das Skript über das Terminal mit dem Befehl python aus:

python ~/project/list_keywords.py

Sie sehen eine Liste aller Python-Schlüsselwörter, die auf der Konsole ausgegeben werden.

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

Wie Sie sehen können, gibt es in Python mehrere Schlüsselwörter. Es ist wichtig zu bedenken, dass diese Wörter reserviert sind und nicht für Ihre eigenen Variablen- oder Funktionsnamen verwendet werden dürfen. Außerdem ist Python case-sensitiv (Groß- und Kleinschreibung wird unterschieden), sodass with ein Schlüsselwort ist, WITH jedoch nicht.

Python-integrierte Bezeichner erkunden

In diesem Schritt werden wir die integrierten Bezeichner von Python untersuchen. Dies sind Namen, die in Python vordefiniert sind und immer verfügbar sind, ohne dass Module importiert werden müssen. Sie umfassen integrierte Funktionen, integrierte Objekte, integrierte Ausnahmen und integrierte Konstanten.

Wir können eine Liste dieser integrierten Bezeichner anzeigen, indem wir die Funktion dir() auf dem Objekt __builtins__ verwenden.

Erstellen wir ein Python-Skript, um die Liste der integrierten Bezeichner anzuzeigen.

Stellen Sie sicher, dass Sie sich im Terminal im Verzeichnis ~/project befinden.

Erstellen Sie eine neue Datei namens list_builtins.py im Verzeichnis ~/project:

touch ~/project/list_builtins.py

Öffnen Sie die Datei list_builtins.py im WebIDE-Editor und fügen Sie den folgenden Code hinzu:

print(dir(__builtins__))

Speichern Sie die Datei.

Führen Sie nun das Skript über das Terminal aus:

python ~/project/list_builtins.py

Sie sehen eine lange Liste von integrierten Bezeichnern, die auf der Konsole ausgegeben werden.

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

Sie können viele bekannte Namen in dieser Liste sehen, wie z. B. print, len, input, int, str usw. Diese sind alle integriert und stehen für die Verwendung in Ihren Python-Programmen zur Verfügung.

Vermeiden Sie die Verwendung von Schlüsselwörtern als Bezeichner

In diesem Schritt zeigen wir, was passiert, wenn Sie versuchen, ein Python-Schlüsselwort als Bezeichner zu verwenden. Wie bereits erwähnt, haben Schlüsselwörter eine besondere Bedeutung und sind von der Python-Sprache reserviert. Der Versuch, sie für Variablennamen, Funktionsnamen usw. zu verwenden, führt zu einem Syntaxfehler.

Erstellen wir ein Python-Skript, um dies in Aktion zu sehen.

Stellen Sie sicher, dass Sie sich im Terminal im Verzeichnis ~/project befinden.

Erstellen Sie eine neue Datei namens keyword_error.py im Verzeichnis ~/project:

touch ~/project/keyword_error.py

Öffnen Sie die Datei keyword_error.py im WebIDE-Editor und fügen Sie den folgenden Code hinzu. Wir werden versuchen, dem Schlüsselwort with einen Wert zuzuweisen.

with = 5
print(with)

Speichern Sie die Datei.

Führen Sie nun das Skript über das Terminal aus:

python ~/project/keyword_error.py

Sie sehen eine Fehlermeldung, die auf einen SyntaxError hinweist.

  File "/home/labex/project/keyword_error.py", line 1
    with = 5
         ^
SyntaxError: invalid syntax

Dieser Fehler zeigt deutlich, dass Sie with nicht als Variablennamen verwenden können, da es sich um ein reserviertes Schlüsselwort handelt. Dies gilt für alle Schlüsselwörter, die im vorherigen Schritt aufgelistet wurden. Wählen Sie immer aussagekräftige Namen für Ihre Bezeichner, die nicht auf der Schlüsselwortliste stehen.

Vermeiden Sie die Verwendung von integrierten Bezeichnern als Benutzerbezeichner

In diesem Schritt werden wir die Folgen der Verwendung von integrierten Bezeichnern als benutzerdefinierte Bezeichner untersuchen. Obwohl Python es Ihnen erlaubt, integrierte Namen neu zuzuweisen, ist dies im Allgemeinen eine schlechte Praxis, da es zu Verwirrung und unerwartetem Verhalten führen kann, wodurch Ihr Code schwerer zu verstehen und zu debuggen ist.

Sehen wir uns ein Beispiel mit der integrierten Funktion print an.

Stellen Sie sicher, dass Sie sich im Terminal im Verzeichnis ~/project befinden.

Erstellen Sie eine neue Datei namens builtin_override.py im Verzeichnis ~/project:

touch ~/project/builtin_override.py

Öffnen Sie die Datei builtin_override.py im WebIDE-Editor und fügen Sie den folgenden Code hinzu. Wir werden print einen Wert zuweisen und dann versuchen, die Funktion print zu verwenden.

print = 5
print("hello")

Speichern Sie die Datei.

Führen Sie nun das Skript über das Terminal aus:

python ~/project/builtin_override.py

Sie sehen einen TypeError, da Sie die integrierte Funktion print durch den ganzzahligen Wert 5 ersetzt haben.

Traceback (most recent call last):
  File "/home/labex/project/builtin_override.py", line 2, in <module>
    print("hello")
TypeError: 'int' object is not callable

Dieser Fehler tritt auf, weil sich der Name print nun auf die Ganzzahl 5 bezieht und Sie eine Ganzzahl nicht wie eine Funktion aufrufen können.

Obwohl es möglich ist, auf das ursprüngliche integrierte print über __builtins__.print("hello") zuzugreifen, selbst nachdem Sie es überschrieben haben, ist dies keine empfohlene Vorgehensweise. Es macht Ihren Code weniger lesbar und kann Probleme verursachen, wenn Sie Bibliotheken verwenden, die erwarten, dass die Standard-integrierten Funktionen verfügbar sind.

Es ist am besten, die Verwendung von integrierten Bezeichnern für Ihre eigenen Variablen, Funktionen oder Klassen zu vermeiden, um solche Konflikte zu verhindern und die Klarheit des Codes zu wahren.

Zusammenfassung

In diesem Lab haben wir uns mit Python-Schlüsselwörtern und integrierten Bezeichnern beschäftigt. Wir haben Python-Schlüsselwörter identifiziert, indem wir das keyword-Modul verwendet und die kwlist ausgegeben haben. Wir haben verstanden, dass Schlüsselwörter reservierte Wörter mit besonderer Bedeutung sind und nicht als reguläre Bezeichner verwendet werden können.

Wir haben uns auch mit Pythons integrierten Bezeichnern beschäftigt, bei denen es sich um vordefinierte Namen handelt, die immer ohne den Import von Modulen verfügbar sind. Wir haben die Bedeutung der Vermeidung der Verwendung von sowohl Schlüsselwörtern als auch integrierten Bezeichnern als benutzerdefinierte Bezeichner gelernt, um Namenskonflikte zu vermeiden und die Klarheit und Korrektheit des Codes zu gewährleisten.