Drei spezielle Literale von Python (Drei spezielle Literale von Python), Lektion, Seite 724151
https://www.purl.org/stefan_ram/pub/spezielle_literale_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Drei spezielle Namen von Python 

»True«

Der Name »True« hat das Objekt ›True‹ als Wert.

Das Objekt ›True‹ soll die Bedeutung „wahr“ repräsentieren.

Aussprachehinweis
true tru
Auswertung
True
True

»False«

Der Name »False« hat das Objekt ›False‹ als Wert.

Das Objekt ›False‹ soll die Bedeutung „falsch“ repräsentieren.

Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
False
False
Aussprachehinweis
false fɔls

»None«

Der Name »None« hat das Objekt ›None‹ als Wert.

Das Objekt ›None‹ soll die Bedeutung „nichts“ („kein Objekt“) repräsentieren.

Die Standard-Konsole von Python  gibt bei Eingabe eines Ausdrucks mit dem Objekt ›None‹ als Wert dementsprechend auch nichts  aus.

Eingabe des Ausdrucks »None« in die Standard-Konsole
None
(keine Ausgabe)
Aussprachehinweis
none nʌn

»True«, »False« und »None«

The Python Language Reference Release 3.8.0a0 (gekürzt) *
The following identifiers are used as reserved words, or keywords of the language, and cannot be used as ordinary identifiers. They must be spelled exactly as written here:  False, None, True.
The Python Language Reference Release 3.8.0a0 *
An identifier occurring as an atom is a name.

Auch mit Werten der Klasse »NoneType« kann nicht potenziert werden.

Konsolenprotokoll (Fehlermeldung wurde gekürzt und übersetzt)
3**None
TypFehler: falscher Operandentyp fuer **: 'int' und 'NoneType'

Typanforderungen sollen sinnlose oder schädliche Kombinationen verhindern, indem diese als Fehler gebrandmarkt werden

Dies kann man mit verschiedenen Typen von Steckern  vergleichen, die es verhindern, daß man beispielsweise einen Kopfhörer in einen Starkstromanschluß steckt, und so einen elektrischen Schlag bekommt.

»bool«

Die beiden Objekte ›True‹ und ›False‹ haben die Klasse ›bool‹ (als Typ).

»NoneType«

Das Objekt ›None‹ hat die Klasse ›NoneType‹ (als Typ).

(Es gibt aber keinen vordefinierten Namen »NoneType«!)

Auswertung von Typennamen

Der Typ ›bool‹ hat den vordefinierten Namen »bool«.

Protokoll
bool
<class 'bool'>

Für den Typ ›NoneType‹ gibt es keinen  vordefinierten Namen!

Protokoll
NoneType
NameError: name 'NoneType' is not defined

Die beiden Wahrheitsobjekte

Die bool-Objekte ›True‹ und ›False‹ werden dort, wo int-Werte erwartet werden, als Darstellung des Wertes «1» beziehungsweise «0» interpretiert.

Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
True + 1
2
Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
True + True
2
Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
True + False
1

Man erkennt den Typ »int« der Werte «1» und «0» oben daran, daß die Ausgabe weder einen Punkt (wie bei float-Werten) noch Apostrophe (wie bei str-Werten) enthält.

Da bool-Objekte somit auch als ganze Zahlen verwendet werden können, sieht man ›bool‹ auch als eine Unterklasse der Klasse ›int‹ an. Insofern ist auch der Typ ›bool‹ ein numerischer Typ.

Klassenhierarchie
                (Wert)
|
|
.-----------.-----'-----.-----------.
| | | |
| | | |
int float str NoneType
|
|
bool
Zitat *
The Boolean type is a subtype of the integer type, and Boolean values behave like the values 0 and 1, respectively 
The Python Language Reference, Release 3.7.0a1
Anmerkung Der korrekte Name des “boolean type ” lautet »bool« – nicht »boolean«!

Teilnehmerfrage: Warum wird die Klasse ›NoneType‹ groß geschrieben?

Klassen werden normalerweise in dem Still wie ›NoneType‹ geschrieben (mit großen Anfangsbuchstaben).

Eine Ausnahme wird aber für aufrufbare Klassen (dieser Begriff wird erst später erklärt werden) und Klassen aus dem Modul ›builtins‹ (dieser Begriff wird erst später erklärt werden) gemacht (außer bei Namen von Ausnahmen [dieser Begriff wird erst später erklärt werden] und von Konstanten).

Die Namen der Typen ›bool‹, ›bytes‹, ›complex‹, ›dict‹, ›float‹, ›int‹, ›list‹, ›map‹, ›object‹, ›set‹, ›str‹, ›tuple‹, und ›type‹ (von denen noch nicht alle bisher auch schon vorgestellt wurden), werden also klein geschrieben, weil sie sich im Modul ›builtins‹ befinden und keine Namen von Ausnahmen sind.

Teilnehmerfrage: Was ist die genaue Bedeutung der Objekte ›True‹, ›False‹ und ›None‹?

Wichtig ist zunächst erst einmal, daß es drei verschiedene  Objekte sind. Ihre genaue Bedeutung wird erst bei der Verwendung im Einzelfall konkret festgelegt. Beispielsweise könnte das Objekt ›None‹ als Ergebnis eines Suchprogramms bedeutet „Es wurde nichts gefunden.“. Hierfür könnte auch ›False‹ verwendet werden, aber falls ›False‹ bei diesem Programm schon eine andere Bedeutung hat, wäre dann immer noch ›None‹ dafür verfügbar.

Teilnehmerfrage: Was ist eigentlich genau ein „Objekt“?

Man kann sagen, daß ein Objekt der Wert eines Ausdrucks ist. Man stellt sich vor, daß solche Objekte beim Ablauf eines Programms existieren und von einem Programm manipuliert werden können.

Objekte können in Programmen alles mögliche darstellen. Wie eben angesprochen, kann ein Suchprogramm beispielsweise das Objekt ›None‹ übermitteln, wenn es ausdrücken will, daß es nicht gefunden hat. Der Empfänger dieser Nachricht kann dann dieses Objekt eindeutig erkennen und von anderen Objekte, wie ›False‹, unterscheiden. Auf diese Weise können Informationen festgehalten oder übermittelt werden.

Manche Objekte bieten noch zusätzliche, nützliche Möglichkeiten, die im weiteren Verlauf des Kurses vorgestellt werden sollen.

Übungsfragen

?   Übungsfrage

Welche Werte haben die folgenden Ausdrücke?

Die Werte der Ausdrücke sollen nach dem Lesen der Ausdrücke vorhergesagt werden, ohne  sie dabei von einer von einer maschinellen Python -Implementation ausgewerten zu lassen.
Ausdruck
True * 'abc'
Ausdruck
False * 'def'

?   Übungsfrage

Welche Werte haben die folgenden Ausdrücke?

Die Werte der Ausdrücke sollen nach dem Lesen der Ausdrücke vorhergesagt werden, ohne  sie dabei von einer von einer maschinellen Python -Implementation ausgewerten zu lassen.
Ausdruck
( 1 - True )
Ausdruck
( 1 - False )
Ausdruck
True * 'abc' + False * 'def'
Ausdruck
True * 'abc' +( 1 - True )* 'def'
Ausdruck
False * 'abc' +( 1 - False )* 'def'

Fluchtwerte ⃗

Ein Fluchtwert  hat eine Bedeutung, die seiner Form widerspricht. Das Objekt ›None‹ soll „kein Objekt “ bedeuten.

Vergleichen kann man dies mit einer Situation, in der auf eine Frage mit „Kein Kommentar“ geantwortet wird. „Kein Kommentar“ ist  ein Kommentar, aber soll bedeutet, daß es keinen Kommentar gibt.

Ein anderer Vergleich: Jemand wird gefragt, wie viele Äpfel er kaufen will. Die Frage legt eine Antwort der Form „Ich möchte … Äpfel kaufen.“ nahe. Es steht also schon fest, daß jemand grundsätzlich Äpfel kaufen möchte, und jetzt geht es nur noch darum, wie viele. Der „Fluchtwert“ „0“ erlaubt es aus dem vorgegebenen Rahmen auszubrechen und innerhalb des Rahmens auszudrücken, daß man gar keine Äpfel kaufen möchte: „Ich möchte 0 Äpfel kaufen.“. Man flieht also aus dem vorgegebenen Rahmen, indem man etwas einsetzt, daß formal erlaubt ist, aber inhaltlich das Gegenteil der Aussage „Ich möchte Äpfel kaufen.“ ausdrückt. Daher handelt es sich um einen Fluchtwert.

Man kann es auch so sagen: Das Objekt ›None‹ soll in einigen Fällen lediglich als eine Art eines nicht-informativen Platzhalters  die Abwesenheit eines „normalen“ Objektes kennzeichnen (also die Abwesenheit eines anderen Objektes als ›None‹). Es kann beispielsweise verwendet werden, wenn aus formalen Gründen ein Objekt angegeben werden muß, aber es inhaltlich keinen besonderen Grund gibt, einen bestimmtes informatives Objekt anzugeben, oder das inhaltlich richtige Objekt nicht angegeben werden kann, weil es nicht bekannt ist.

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724151 stefan_ram:724151 Drei spezielle Literale von Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724151, slrprddef724151, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/spezielle_literale_python