Grundlegende Datentypen in Python

Grundlegende Datentypen in Python

Jetzt kennen Siehow to interact with the Python interpreter and execute Python code. Es ist Zeit, sich mit der Python-Sprache zu beschäftigen. Zunächst werden die grundlegenden Datentypen erläutert, die in Python integriert sind.

Folgendes lernen Sie in diesem Tutorial:

  • Sie lernen einige grundlegendenumeric, stringundBoolean-Typen kennen, die in Python integriert sind. Am Ende dieses Tutorials werden Sie wissen, wie Objekte dieser Art aussehen und wie sie dargestellt werden.

  • Sie erhalten auch einen Überblick über Pythons integriertefunctions.. Dies sind vorab geschriebene Codestücke, die Sie aufrufen können, um nützliche Dinge zu tun. Sie haben bereits die integrierte Funktionprint()gesehen, aber es gibt viele andere.

Kostenloser PDF-Download: Python 3 Spickzettel

__ Take the Quiz: Testen Sie Ihr Wissen mit unserem interaktiven Quiz „Grundlegende Datentypen in Python“. Nach Abschluss erhalten Sie eine Punktzahl, mit der Sie Ihren Lernfortschritt im Laufe der Zeit verfolgen können:

Ganze Zahlen

In Python 3 gibt es praktisch keine Begrenzung für die Länge eines ganzzahligen Werts. Natürlich wird es wie alle Dinge durch die Speicherkapazität Ihres Systems eingeschränkt, aber darüber hinaus kann eine Ganzzahl so lang sein, wie Sie es benötigen:

>>>

>>> print(123123123123123123123123123123123123123123123123 + 1)
123123123123123123123123123123123123123123123124

Python interpretiert eine Folge von Dezimalstellen ohne Präfix als Dezimalzahl:

>>>

>>> print(10)
10

Die folgenden Zeichenfolgen können einem ganzzahligen Wert vorangestellt werden, um eine andere Basis als 10 anzugeben:

Präfix Deutung Base

0b (Null + Kleinbuchstabe'b')
0B (Null + Großbuchstabe'B')

Binär

2

0o (Null + Kleinbuchstabe'o')
0O (Null + Großbuchstabe'O')

Oktal

8

0x (Null + Kleinbuchstabe'x')
0X (Null + Großbuchstabe'X')

Hexadezimal

16

Zum Beispiel:

>>>

>>> print(0o10)
8

>>> print(0x10)
16

>>> print(0b10)
2

Weitere Informationen zu ganzzahligen Werten mit nicht dezimalen Basen finden Sie auf den folgenden Wikipedia-Websites:Binary,Octal undHexadecimal.

Der zugrunde liegende Typ einer Python-Ganzzahl, unabhängig von der Basis, mit der sie angegeben wurde, heißtint:

>>>

>>> type(10)

>>> type(0o10)

>>> type(0x10)

Note: Dies ist ein guter Zeitpunkt, um zu erwähnen, dass Sie die Funktionprint() nicht verwenden müssen, wenn Sie in einer REPL-Sitzung einen Wert anzeigen möchten. Wenn Sie den Wert einfach an der Eingabeaufforderung von>>>eingeben und[.kbd .key-enter]#Enter # drücken, wird Folgendes angezeigt:

>>>

>>> 10
10
>>> 0x10
16
>>> 0b10
2

Viele der Beispiele in dieser Lernserie verwenden diese Funktion.

Beachten Sie, dass dies in einer Skriptdatei nicht funktioniert. Ein Wert, der in einer Skriptdatei in einer eigenen Zeile angezeigt wird, hat keine Auswirkungen.

Gleitkommazahlen

Derfloat-Typ in Python bezeichnet eine Gleitkommazahl. float Werte werden mit einem Dezimalpunkt angegeben. Optional kann das Zeichene oderE gefolgt von einer positiven oder negativen Ganzzahl angehängt werden, umscientific notation anzugeben:

>>>

>>> 4.2
4.2
>>> type(4.2)

>>> 4.
4.0
>>> .2
0.2

>>> .4e7
4000000.0
>>> type(.4e7)

>>> 4.2e-4
0.00042

Deep Dive: Gleitkomma-Darstellung

Im Folgenden finden Sie ausführlichere Informationen dazu, wie Python Gleitkommazahlen intern darstellt. Sie können in Python problemlos Gleitkommazahlen verwenden, ohne sie auf dieser Ebene zu verstehen. Machen Sie sich also keine Sorgen, wenn dies zu kompliziert erscheint. Die Informationen werden hier angezeigt, falls Sie neugierig sind.

Fast alle Plattformen repräsentieren die Werte von Pythonfloatals 64-Bit-Werte mit doppelter Genauigkeit gemäß dem Standard vonIEEE 754. In diesem Fall beträgt der Maximalwert, den eine Gleitkommazahl haben kann, ungefähr 1,8 × 10308. Python gibt eine Zahl an, die größer ist als die Zeichenfolgeinf:

>>>

>>> 1.79e308
1.79e+308
>>> 1.8e308
inf

Die Zahl, die einer Zahl ungleich Null am nächsten kommt, ist ungefähr 5,0 × 10-324. Alles, was näher an Null liegt, ist effektiv Null:

>>>

>>> 5e-324
5e-324
>>> 1e-325
0.0

Gleitkommazahlen werden intern als binäre (Basis-2) Brüche dargestellt. Die meisten Dezimalbrüche können nicht genau als binäre Brüche dargestellt werden, daher ist in den meisten Fällen die interne Darstellung einer Gleitkommazahl eine Annäherung an den tatsächlichen Wert. In der Praxis ist der Unterschied zwischen dem tatsächlichen Wert und dem dargestellten Wert sehr gering und sollte normalerweise keine signifikanten Probleme verursachen.

Further Reading: Weitere Informationen zur Gleitkomma-Darstellung in Python und den möglichen Fallstricken finden Sie unterFloating Point Arithmetic: Issues and Limitations in der Python-Dokumentation.

Komplexe Zahlen

Komplexe Zahlen werden als<real part>+<imaginary part>j angegeben. Zum Beispiel:

>>>

>>> 2+3j
(2+3j)
>>> type(2+3j)

Streicher

Zeichenfolgen sind Sequenzen von Zeichendaten. Der Zeichenfolgentyp in Python heißtstr.

String-Literale können durch einfache oder doppelte Anführungszeichen getrennt werden. Alle Zeichen zwischen dem öffnenden Trennzeichen und dem passenden schließenden Trennzeichen sind Teil der Zeichenfolge:

>>>

>>> print("I am a string.")
I am a string.
>>> type("I am a string.")


>>> print('I am too.')
I am too.
>>> type('I am too.')

Eine Zeichenfolge in Python kann beliebig viele Zeichen enthalten. Die einzige Grenze sind die Speicherressourcen Ihres Computers. Eine Zeichenfolge kann auch leer sein:

>>>

>>> ''
''

Was ist, wenn Sie ein Anführungszeichen als Teil der Zeichenfolge selbst einfügen möchten? Ihr erster Impuls könnte sein, so etwas zu versuchen:

>>>

>>> print('This string contains a single quote (') character.')
SyntaxError: invalid syntax

Wie Sie sehen, funktioniert das nicht so gut. Die Zeichenfolge in diesem Beispiel wird mit einem einfachen Anführungszeichen geöffnet, sodass Python davon ausgeht, dass das nächste einfache Anführungszeichen, das in Klammern steht und Teil der Zeichenfolge sein soll, das abschließende Trennzeichen ist. Das endgültige einfache Anführungszeichen ist dann ein Streu und verursacht den angezeigten Syntaxfehler.

Wenn Sie einen Anführungszeichentyp in die Zeichenfolge aufnehmen möchten, können Sie die Zeichenfolge am einfachsten durch den anderen Typ trennen. Wenn eine Zeichenfolge ein einfaches Anführungszeichen enthalten soll, trennen Sie sie durch doppelte Anführungszeichen und umgekehrt:

>>>

>>> print("This string contains a single quote (') character.")
This string contains a single quote (') character.

>>> print('This string contains a double quote (") character.')
This string contains a double quote (") character.

Escape-Sequenzen in Strings

Manchmal möchten Sie, dass Python ein Zeichen oder eine Zeichenfolge innerhalb einer Zeichenfolge anders interpretiert. Dies kann auf zwei Arten geschehen:

  • Möglicherweise möchten Sie die spezielle Interpretation unterdrücken, dass bestimmte Zeichen normalerweise innerhalb einer Zeichenfolge angegeben werden.

  • Möglicherweise möchten Sie Zeichen in einer Zeichenfolge, die normalerweise wörtlich genommen werden, speziell interpretieren.

Sie können dies mit einem Backslash-Zeichen (\) erreichen. Ein Backslash-Zeichen in einer Zeichenfolge gibt an, dass ein oder mehrere darauf folgende Zeichen speziell behandelt werden sollten. (Dies wird als Escape-Sequenz bezeichnet, da der Backslash bewirkt, dass die nachfolgende Zeichensequenz ihre übliche Bedeutung "maskiert".)

Mal sehen, wie das funktioniert.

Unterdrückung der Bedeutung von Sonderzeichen

Sie haben bereits die Probleme gesehen, auf die Sie stoßen können, wenn Sie versuchen, Anführungszeichen in eine Zeichenfolge aufzunehmen. Wenn eine Zeichenfolge durch einfache Anführungszeichen getrennt ist, können Sie kein einfaches Anführungszeichen als Teil der Zeichenfolge angeben, da für diese Zeichenfolge das einfache Anführungszeichen eine besondere Bedeutung hat - es beendet die Zeichenfolge:

>>>

>>> print('This string contains a single quote (') character.')
SyntaxError: invalid syntax

Wenn Sie einen Backslash vor dem Anführungszeichen in einer Zeichenfolge angeben, wird dieser "ausgeblendet" und Python unterdrückt seine übliche spezielle Bedeutung. Es wird dann einfach als wörtliches einfaches Anführungszeichen interpretiert:

>>>

>>> print('This string contains a single quote (\') character.')
This string contains a single quote (') character.

Das gleiche funktioniert auch in einer Zeichenfolge, die durch doppelte Anführungszeichen begrenzt ist:

>>>

>>> print("This string contains a double quote (\") character.")
This string contains a double quote (") character.

Das Folgende ist eine Tabelle von Escape-Sequenzen, die Python veranlassen, die übliche spezielle Interpretation eines Zeichens in einer Zeichenfolge zu unterdrücken:

Escape
Sequenz
Übliche Interpretation von
Zeichen nach Backslash
"Entkommene" Interpretation

\'

Beendet die Zeichenfolge mit einem einfachen Anführungszeichen

Buchstäbliches einfaches Anführungszeichen (')

\"

Beendet die Zeichenfolge mit einem doppelten Anführungszeichen

Buchstäbliches doppeltes Anführungszeichen (")

\newline

Beendet die Eingabezeile

Newline wird ignoriert

\\

Führt die Escape-Sequenz ein

Buchstäblicher Backslash (\)

Normalerweise beendet ein Zeilenumbruch die Zeileneingabe. Wenn Sie also[.kbd .key-enter]#Enter # in der Mitte eines Strings drücken, denkt Python, dass es unvollständig ist:

>>>

>>> print('a

SyntaxError: EOL while scanning string literal

Um eine Zeichenfolge über mehrere Zeilen aufzuteilen, fügen Sie vor jeder neuen Zeile einen Backslash ein. Die neuen Zeilen werden ignoriert:

>>>

>>> print('a\
... b\
... c')
abc

Um einen wörtlichen Backslash in eine Zeichenfolge aufzunehmen, maskieren Sie ihn mit einem Backslash:

>>>

>>> print('foo\\bar')
foo\bar
Zeichen mit besonderer Bedeutung versehen

Angenommen, Sie müssen eine Zeichenfolge erstellen, die ein Tabulatorzeichen enthält. In einigen Texteditoren können Sie möglicherweise ein Tabulatorzeichen direkt in Ihren Code einfügen. Viele Programmierer halten diese schlechte Praxis jedoch aus mehreren Gründen für:

  • Der Computer kann zwischen einem Tabulatorzeichen und einer Folge von Leerzeichen unterscheiden, dies ist jedoch nicht möglich. Für einen Menschen, der den Code liest, sind Tabulator- und Leerzeichen visuell nicht unterscheidbar.

  • Einige Texteditoren sind so konfiguriert, dass Tabulatorzeichen automatisch entfernt werden, indem sie auf die entsprechende Anzahl von Leerzeichen erweitert werden.

  • Einige Python REPL-Umgebungen fügen keine Registerkarten in den Code ein.

In Python (und fast allen anderen gängigen Computersprachen) kann ein Tabulatorzeichen durch die Escape-Sequenz angegeben werden:

>>>

>>> print('foo\tbar')
foo     bar

Die Escape-Sequenz bewirkt, dass das Zeichent seine übliche Bedeutung verliert, die eines wörtlichent. Stattdessen wird die Kombination als Tabulatorzeichen interpretiert.

Hier ist eine Liste von Escape-Sequenzen, die bewirken, dass Python eine besondere Bedeutung anwendet, anstatt sie wörtlich zu interpretieren:

Fluchtabfolge "Entkommene" Interpretation

\a

ASCII Bell (BEL) Zeichen

\b

ASCII-Rücktaste (BS)

\f

ASCII Formfeed (FF) Zeichen

\n

ASCII-Zeilenvorschubzeichen (LF)

\N{}

Zeichen aus der Unicode-Datenbank mit angegebenen<name>

\r

ASCII-Wagenrücklaufzeichen (CR)

\t

ASCII Horizontal Tab (TAB) Zeichen

\uxxxx

Unicode-Zeichen mit 16-Bit-Hex-Wertxxxx

\Uxxxxxxxx

Unicode-Zeichen mit 32-Bit-Hex-Wertxxxxxxxx

\v

ASCII Vertical Tab (VT) Zeichen

\oxx

Zeichen mit Oktalwertxx

\xhh

Zeichen mit Hex-Werthh

Beispiele:

>>>

>>> print("a\tb")
a    b
>>> print("a\141\x61")
aaa
>>> print("a\nb")
a
b
>>> print('\u2192 \N{rightwards arrow}')
→ →

Diese Art der Escape-Sequenz wird normalerweise zum Einfügen von Zeichen verwendet, die nicht ohne weiteres über die Tastatur generiert werden oder nicht leicht lesbar oder druckbar sind.

Rohe Saiten

Vor einem Raw-String-Literal stehtr oderR, was angibt, dass Escape-Sequenzen in der zugehörigen String nicht übersetzt werden. Das Backslash-Zeichen bleibt in der Zeichenfolge:

>>>

>>> print('foo\nbar')
foo
bar
>>> print(r'foo\nbar')
foo\nbar

>>> print('foo\\bar')
foo\bar
>>> print(R'foo\\bar')
foo\\bar

Dreifach zitierte Zeichenfolgen

Es gibt noch eine andere Möglichkeit, Zeichenfolgen in Python abzugrenzen. Zeichenfolgen mit dreifachen Anführungszeichen werden durch übereinstimmende Gruppen von drei einfachen Anführungszeichen oder drei doppelten Anführungszeichen begrenzt. Escape-Sequenzen funktionieren immer noch in Zeichenfolgen mit dreifachen Anführungszeichen, aber einfache Anführungszeichen, doppelte Anführungszeichen und Zeilenumbrüche können eingefügt werden, ohne dass sie maskiert werden. Dies bietet eine bequeme Möglichkeit, eine Zeichenfolge mit einfachen und doppelten Anführungszeichen zu erstellen:

>>>

>>> print('''This string has a single (') and a double (") quote.''')
This string has a single (') and a double (") quote.

Da Zeilenumbrüche eingefügt werden können, ohne dass sie ausgeblendet werden, können auch mehrzeilige Zeichenfolgen verwendet werden:

>>>

>>> print("""This is a
string that spans
across several lines""")
This is a
string that spans
across several lines

Im kommenden Tutorial zur Python-Programmstruktur werden Sie sehen, wie Zeichenfolgen in dreifachen Anführungszeichen verwendet werden können, um Python-Code einen erklärenden Kommentar hinzuzufügen.

Boolescher Typ, Boolescher Kontext und „Wahrhaftigkeit“

Python 3 bietet einen booleschen Datentyp. Objekte vom Typ Boolean können einen von zwei Werten haben,True oderFalse:

>>>

>>> type(True)

>>> type(False)

Wie Sie in den kommenden Tutorials sehen werden, werden Ausdrücke in Python häufig im booleschen Kontext ausgewertet, dh sie werden so interpretiert, dass sie Wahrheit oder Falschheit darstellen. Ein Wert, der im booleschen Kontext wahr ist, wird manchmal als "wahr" bezeichnet, und ein Wert, der im booleschen Kontext falsch ist, wird als "falsch" bezeichnet. (Möglicherweise sehen Sie auch "Falsch" mit der Schreibweise "Falsey".)

Die „Wahrhaftigkeit“ eines Objekts vom Booleschen Typ ist selbstverständlich: Boolesche Objekte, die gleichTrueind, sind wahr (wahr), und solche, die gleichFalseind, sind falsch (falsch). Nicht-Boolesche Objekte können jedoch auch im Booleschen Kontext ausgewertet und als wahr oder falsch bestimmt werden.

Weitere Informationen zur Auswertung von Objekten im booleschen Kontext finden Sie im nächsten Lernprogramm zu Operatoren und Ausdrücken in Python, wenn Sie auf logische Operatoren stoßen.

Eingebaute Funktionen

Der Python-Interpreter unterstützt viele integrierte Funktionen: Achtundsechzig ab Python 3.6. Sie werden viele davon in den folgenden Diskussionen behandeln, da sie im Kontext auftauchen.

Im Moment folgt eine kurze Übersicht, um ein Gefühl dafür zu geben, was verfügbar ist. Weitere Informationen finden Sie inPython documentation on built-in functions. Viele der folgenden Beschreibungen beziehen sich auf Themen und Konzepte, die in zukünftigen Tutorials behandelt werden.

Math

Funktion Beschreibung

abs()

Gibt den absoluten Wert einer Zahl zurück

divmod()

Gibt den Quotienten und den Rest der Ganzzahldivision zurück

max()

Gibt das größte der angegebenen Argumente oder Elemente in einer Iterable zurück

min()

Gibt das kleinste der angegebenen Argumente oder Elemente in einer Iterable zurück

pow()

Erhöht eine Zahl zu einer Potenz

round()

Rundet einen Gleitkommawert

sum()

Summiert die Elemente eines iterable

Typkonvertierung

Funktion Beschreibung

ascii()

Gibt eine Zeichenfolge zurück, die eine druckbare Darstellung eines Objekts enthält

bin()

Konvertiert eine Ganzzahl in eine Binärzeichenfolge

bool()

Konvertiert ein Argument in einen Booleschen Wert

chr()

Gibt die Zeichenfolgendarstellung des durch das Integer-Argument angegebenen Zeichens zurück

complex()

Gibt eine komplexe Zahl zurück, die aus Argumenten aufgebaut ist

float()

Gibt ein Gleitkommaobjekt zurück, das aus einer Zahl oder einer Zeichenfolge erstellt wurde

hex()

Konvertiert eine Ganzzahl in eine hexadezimale Zeichenfolge

int()

Gibt ein ganzzahliges Objekt zurück, das aus einer Zahl oder einer Zeichenfolge erstellt wurde

oct()

Konvertiert eine Ganzzahl in eine Oktalzeichenfolge

ord()

Gibt eine ganzzahlige Darstellung eines Zeichens zurück

repr()

Gibt eine Zeichenfolge zurück, die eine druckbare Darstellung eines Objekts enthält

str()

Gibt eine Zeichenfolgenversion eines Objekts zurück

type()

Gibt den Typ eines Objekts zurück oder erstellt ein neues Typobjekt

Iterables und Iteratoren

Funktion Beschreibung

all()

GibtTrue zurück, wenn alle Elemente einer Iterable wahr sind

any()

GibtTrue zurück, wenn Elemente einer Iterable wahr sind

enumerate()

Gibt eine Liste von Tupeln zurück, die Indizes und Werte aus einer Iterable enthalten

filter()

Filtert Elemente aus einer iterierbaren Datei

iter()

Gibt ein Iteratorobjekt zurück

len()

Gibt die Länge eines Objekts zurück

map()

Wendet eine Funktion auf jedes Element einer Iterable an

next()

Ruft das nächste Element von einem Iterator ab

range()

Erzeugt einen Bereich von Ganzzahlwerten

reversed()

Gibt einen umgekehrten Iterator zurück

slice()

Gibt das Objektslicezurück

sorted()

Gibt eine sortierte Liste von einer iterierbaren zurück

zip()

Erstellt einen Iterator, der Elemente aus iterablen Elementen aggregiert

Zusammengesetzter Datentyp

Funktion Beschreibung

bytearray()

Erstellt ein Objekt der Klassebytearrayund gibt es zurück

bytes()

Erstellt einbytes-Objekt und gibt es zurück (ähnlich wiebytearray, jedoch unveränderlich).

dict()

Erstellt eindict-Objekt

frozenset()

Erstellt einfrozenset-Objekt

list()

Konstruiert einlist-Objekt

object()

Gibt ein neues featureless Objekt zurück

set()

Erstellt einset-Objekt

tuple()

Erstellt eintuple-Objekt

Klassen, Attribute und Vererbung

Funktion Beschreibung

classmethod()

Gibt eine Klassenmethode für eine Funktion zurück

delattr()

Löscht ein Attribut aus einem Objekt

getattr()

Gibt den Wert eines benannten Attributs eines Objekts zurück

hasattr()

GibtTrue zurück, wenn ein Objekt ein bestimmtes Attribut hat

isinstance()

Bestimmt, ob ein Objekt eine Instanz einer bestimmten Klasse ist

issubclass()

Bestimmt, ob eine Klasse eine Unterklasse einer bestimmten Klasse ist

property()

Gibt einen Eigenschaftswert einer Klasse zurück

setattr()

Legt den Wert eines benannten Attributs eines Objekts fest

super()

Gibt ein Proxy-Objekt zurück, das Methodenaufrufe an eine übergeordnete oder Geschwisterklasse delegiert

Input/Output

Funktion Beschreibung

format()

Konvertiert einen Wert in eine formatierte Darstellung

input()

Liest Eingaben von der Konsole

open()

Öffnet eine Datei und gibt ein Dateiobjekt zurück

print()

Druckt in einen Textstrom oder auf die Konsole

Variablen, Referenzen und Umfang

Funktion Beschreibung

dir()

Gibt eine Liste von Namen im aktuellen lokalen Bereich oder eine Liste von Objektattributen zurück

globals()

Gibt ein Wörterbuch zurück, das die aktuelle globale Symboltabelle darstellt

id()

Gibt die Identität eines Objekts zurück

locals()

Aktualisiert und gibt ein Wörterbuch zurück, das die aktuelle lokale Symboltabelle darstellt

vars()

Gibt das Attribut__dict__für ein Modul, eine Klasse oder ein Objekt zurück

Sonstiges

Funktion Beschreibung

callable()

GibtTrue zurück, wenn das Objekt aufrufbar erscheint

compile()

Kompiliert die Quelle in einen Code oder ein AST-Objekt

eval()

Wertet einen Python-Ausdruck aus

exec()

Implementiert die dynamische Ausführung von Python-Code

hash()

Gibt den Hashwert eines Objekts zurück

help()

Ruft das integrierte Hilfesystem auf

memoryview()

Gibt ein Speicheransichtsobjekt zurück

staticmethod()

Gibt eine statische Methode für eine Funktion zurück

__import__()

Wird durch die Anweisungimportaufgerufen

Fazit

In diesem Tutorial haben Sie die integrierten Python-Funktionendata types undfunctionskennengelernt.

Die bisher gegebenen Beispiele haben alle manipuliert und nur konstante Werte angezeigt. In den meisten Programmen möchten Sie normalerweise Objekte erstellen, deren Wert sich während der Ausführung des Programms ändert.

Fahren Sie mit dem nächsten Tutorial fort, um mehr über Pythonvariables. zu erfahren

__ Take the Quiz: Testen Sie Ihr Wissen mit unserem interaktiven Quiz „Grundlegende Datentypen in Python“. Nach Abschluss erhalten Sie eine Punktzahl, mit der Sie Ihren Lernfortschritt im Laufe der Zeit verfolgen können: