Drei selten verwendete Python 3-Funktionen, die jeder kennen sollte



Python 3 gibt es schon eine Weile, und einige Entwickler, insbesondere diejenigen, die gerade erst mit Python anfangen, verwenden diese Version der Sprache bereits. Während viele der neuen Funktionen weit verbreitet sind, scheinen einige zurückgelassen zu werden. In diesem Artikel werde ich drei der am wenigsten bekannten, aber nützlichen Funktionen behandeln. Ich kenne sie aus anderen Sprachen und sie machen Python 3 cool.



Dieser Artikel ist eine Übersetzung von 3 vernachlässigten Funktionen in Python 3, die jeder verwenden sollte .



Aufzählungen



Ich habe in Java und Swift viel Aufzählungen verwendet. Ich benutze sie jetzt weiterhin in Python.



Das Deklarieren einer Aufzählung in Python ist sehr einfach und war vor der dritten Version möglich (wenn auch mit Einschränkungen):



from enum import Enum

class State(Enum):
  AIR = 0
  LAND = 1
  SEA = 2
  
myState = State.AIR

#  0
print(myState.value)
#  AIR
print(myState.name)


Im obigen Code wird die Aufzählung eingeführt, indem eine Klasse deklariert wird, von der geerbt wird Enum. Und dann werden alle notwendigen Zustände einfach beschrieben. In meinem Fall: AIR, LANDund SEA.



Eine Funktionalität, die in Python 3 hinzugefügt wurde, ist die Fähigkeit, .valueund zu verwenden .name. Mit ihnen können Sie die Nummer und die Zeichenfolge abrufen, die der Aufzählung entsprechen.



Zum Beispiel kann der Wert ausgegeben State.LAND.namewird LAND.



Aufzählungen sind im Code nützlich, wenn Sie einige Textkennungen für Konstanten wünschen. Anstatt beispielsweise einen Zustand mit 0 oder 1 zu vergleichen, ist es viel aufschlussreicher, mit State.MOVINGoder zu vergleichen State.STATIONARY. Konstanten können sich ändern und wenn jemand später auf den Code schaut, dann das WortMOVINGgibt viel mehr Verständnis als 0. Infolgedessen wird die Lesbarkeit des Codes stark verbessert.



Weitere Informationen finden Sie in der offiziellen Python 3-Dokumentation zu Enum .



Formatierung



In Version 3.6 hinzugefügt, ist es fstringsein leistungsstarkes Textformatierungswerkzeug. Sie ermöglichen viel besser lesbaren und fehlerfreien Code (den ich nach dem Wechsel von Java genieße). Dies ist besser als die formatzuvor in Python verwendete. Hier ist ein Anwendungsbeispiel format:



name = ''
blog_title = 'codeatcpp.com'

# ,          codeatcpp.com.
a = ",   {}       {}.".format(name, blog_title)


Es ist leicht, die leeren geschweiften Klammern innerhalb der Zeichenfolge und nach der Liste mit den Namen der Variablen in einer bestimmten Reihenfolge zu erkennen.



Schauen wir uns nun denselben Code an, aber die Verwendung fstringist besser lesbar und der Swift-Formatierungsmethode sehr ähnlich.



name = ''
blog_title = 'codeatcpp.com'

# ,          codeatcpp.com.
a = f",   {name}       {blog_title}."


Um eine so ordentliche Zeichenfolge zu erhalten, müssen Sie nur einen Buchstaben fvor die Anführungszeichen setzen. Statt leerer Klammern können Sie dann sofort die Namen von Variablen oder Daten direkt in die Zeichenfolge schreiben. Da Variablen direkt in eine Zeile geschrieben werden, müssen Sie nicht die Anzahl der Elemente zählen und die Reihenfolge verfolgen, in der die Variablen am Ende platziert werden. Sie sind genau dort, wo ihre Werte gebraucht werden.



Die Verwendung fstringbietet mehr lesbaren und einfacher zu pflegenden Code als die klassischen Ansätze.



Datenklassen



Datenklassen können ein verwirrenderes Thema sein als die vorherigen, daher sind einige Erläuterungen erforderlich. Datenklassen haben mir an Kotlin sehr gut gefallen, daher liebe ich es, sie auch in Python zu verwenden.



Eine Datenklasse ist eine Klasse, deren einziger Zweck darin besteht, Daten zu speichern. Die Klasse enthält Variablen, die gelesen und geschrieben werden können, aber keine zusätzliche Logik haben.



Stellen Sie sich vor, Sie haben ein Programm, in dem Sie eine Zeichenfolge und ein Array von Zahlen zwischen verschiedenen Klassen übergeben müssen. Sie können Methoden wie verwenden pass(str, arr), aber es ist viel bequemer, eine Klasse, die eine Zeichenfolge und ein Array enthält, als einzige Mitglieder der Klasse zu erstellen.



Die Verwendung einer Datenklasse zeigt besser, was Sie versuchen, und erleichtert auch das Erstellen von Komponententests.



Das folgende Beispiel zeigt eine einfache Datenklasse, bei der es sich um einen 3D-Vektor handelt. Sie kann jedoch problemlos erweitert werden, um eine beliebige Kombination verschiedener Daten darzustellen:



from dataclasses import dataclass

#   
@dataclass
class Vector3D:
    x: int
    y: int
    z: int
      
#  
u = Vector3D(1,1,-1)

# : Vector3D(x=1, y=1, z=-1)
print(u)


Hier ist leicht zu erkennen, dass die Definition einer Datenklasse der Definition einer regulären Klasse sehr ähnlich ist, außer dass ein Dekorator verwendet wird @dataclassund dann jedes Feld als definiert wird : .



Obwohl die Funktionalität der erstellten Version Vector3Dsehr eingeschränkt ist, besteht der Zweck der Verwendung der Datenklasse darin, die Effizienz zu erhöhen und die Anzahl der Fehler im Code zu verringern. Es ist viel besser, es als Parameter zu übergeben Vector3Dals eine Reihe von Typvariablen int.



Weitere Informationen zum Dekorator @dataclassfinden Sie in der offiziellen Python 3-Dokumentation .



Fazit



Lassen Sie mich in den Kommentaren wissen, wie Ihnen diese Möglichkeiten gefallen. Es wird interessant sein, neue Szenarien für ihre Verwendung zu erfahren. Viel Spaß beim Codieren!



All Articles