Christian Mayer

Python One-Liners


Скачать книгу

Die Rangordnung der booleschen Operatoren

      Um die boolesche Logik wirklich zu verstehen, muss man die Reihenfolge beachten, in der die booleschen Operatoren angewandt werden. Nehmen Sie z. B. die natürlichsprachige Aussage »es regnet und es ist kalt oder windig«. Wir können sie auf zweierlei Weise interpretieren:

      »(es regnet und es ist kalt) oder windig«In diesem Fall wäre die Aussage True, falls es windig ist – selbst wenn es nicht regnet.

      und »es regnet und (es ist kalt oder windig)«In diesem Fall dagegen wäre die Aussage False, falls es nicht regnet – selbst wenn es kalt oder windig ist.

      Die Reihenfolge der booleschen Operatoren ist wichtig. Die erste Interpretation dieser Aussage wäre korrekt, weil der and-Operator Vorrang vor dem or-Operator hat. Schauen wir uns den Codeausschnitt in Listing 1–4 an.

      x, y = True, False

      print(x and not y)

      # True

      print(not x and y or x)

      # True

      ## 2. If-Bedingung wird zu False ausgewertet

      if None or 0 or 0.0 or '' or [] or {} or set():

      print("Dead Code") # Wird nicht erreicht

       Listing 1–4 Der boolesche Datentyp

      Dieser Code zeigt zwei wichtige Punkte. Erstens werden boolesche Operatoren nach Priorität geordnet – der Operator not hat die höchste Priorität, gefolgt vom Operator and, gefolgt vom Operator or. Zweitens werden die folgenden Werte automatisch zu False ausgewertet: das Schlüsselwort None, der Integer-Wert 0, der Float-Wert 0.0, leere Strings oder leere Containertypen.

       Strings

      Python-Strings sind Zeichenfolgen. Strings sind unveränderlich, können also nach der Erschaffung nicht verändert werden. Es gibt zwar noch andere Methoden, um Strings herzustellen, doch dies sind die fünf gebräuchlichsten:

      Einfache Anführungszeichen'Ja'

      Doppelte Anführungszeichen"Ja"

      Dreifache Anführungszeichen für mehrzeilige Strings'''Ja''' oder """Ja"""

      Die String-Methodestr(5) == '5' ist True

      Verkettung'Py' + 'thon' wird 'Python'

      Oft verwenden Sie explizit Whitespace-Zeichen (Leerraum) in Strings. Die am häufigsten eingesetzten Whitespace-Zeichen sind das Newline-Zeichen \n, das Leerzeichen \s und das Tabulator-Zeichen \t.

      Listing 1–5 zeigt die wichtigsten String-Methoden.

      y = " Das ist faul\t\n "

      print(y.strip())

      # Entfernt Whitespace: 'Das ist faul'

      print("DrDre".lower())

      # Kleinbuchstaben: 'drdre'

      print("achtung".upper())

      # Großbuchstaben: 'ATTENTION'

      print("smartphone".startswith("smart"))

      # Vergleicht das Präfix des Strings mit dem Argument: True

      print("smartphone".endswith("phone"))

      # Vergleicht das Suffix des Strings mit dem Argument: True

      print("another".find("other"))

      # Vergleichsindex: 2

      print("cheat".replace("ch", "m"))

      # Ersetzt alle Vorkommen des ersten durch das zweite Argument: meat

      print(','.join(["F", "B", "I"]))

      # Setzt alle Elemente in der Liste unter Verwendung des Trenn-Strings

      hintereinander: F,B,I

      print(len("Rumpelstiltskin"))

      # String-Länge: 15

      print("ear" in "earth")

      # Enthält: True

       Listing 1–5 Der Datentyp string

      Diese nicht vollständige Liste der String-Methoden zeigt, wie viel Macht der Datentyp string besitzt und dass Sie viele der gebräuchlichen String-Probleme mit der in Python enthaltenen Funktionalität lösen können. Falls Sie unsicher sind, wie Sie ein bestimmtes Ergebnis bei String-Problemen erreichen, schauen Sie in die Onlinereferenz mit allen eingebauten String-Methoden: https://docs.python.org/3/library/string.html#module-string.

      Boolesche Werte, Integer, Floats und Strings sind die wichtigsten grundlegenden Datentypen in Python. Oft jedoch müssen Sie Datenelemente nicht nur erzeugen, sondern auch strukturieren. In diesen Fällen helfen Ihnen Containertypen. Doch bevor wir uns diese anschauen, wollen wir noch einen wichtigen Spezialdatentyp kennenlernen: None.

       Das Schlüsselwort None

      Das Schlüsselwort None ist eine Python-Konstante und bedeutet die Abwesenheit eines Werts. Andere Programmiersprachen wie etwa Java nutzen stattdessen den Wert null. Allerdings verwirrt der Begriff null Anfänger oft, die glauben, dies sei gleich dem Integer-Wert 0. Python nutzt also das Schlüsselwort None, wie Listing 1–6 zeigt, um anzudeuten, dass es sich von jedem anderen numerischen Wert für null, einer leeren Liste oder einem leeren String unterscheidet. Interessanterweise ist der Wert None der einzige Wert im Datentyp NoneType.

      x = 2

      # Das Schlüsselwort 'is' wird als Nächstes eingeführt

      print(f() is None)

      # True

      print("" == None)

      # False

      print(0 == None)

      # False

       Listing 1–6 Die Verwendung des Schlüsselworts None

      Dieser Code zeigt mehrere Beispiele für den Datenwert None (und was er nicht ist). Falls Sie für eine Funktion keinen Rückgabewert definieren, wird standardmäßig None zurückgeliefert.

       Container-Datenstrukturen

      Python enthält Container-Datentypen, die effizient mit komplexen Operationen zurechtkommen und dabei leicht verwendbar sind.

       Listen

      Die Liste ist ein Container-Datentyp, der eine Abfolge von Elementen speichert. Im Gegensatz zu Strings sind Listen veränderbar