Heim > Artikel > Backend-Entwicklung > Einführung in effiziente Programmiertechniken in Python
Ich programmiere seit vielen Jahren in Python und bin auch heute noch erstaunt, wie sauber die Sprache Code darstellen kann und wie gut sie die Prinzipien der DRY-Programmierung anwendet. Im Laufe der Jahre habe ich mir viele Tipps und Kenntnisse angeeignet, vor allem durch die Lektüre beliebter Open-Source-Software wie Django, Flask und Requests.
Die Techniken, die ich unten ausgewählt habe, werden von Leuten oft übersehen, aber sie können uns bei der täglichen Programmierung wirklich sehr helfen.
Die meisten Python-Programmierer kennen und verwenden Listenverständnisse. Wenn Sie mit dem Konzept des Listenverständnisses nicht vertraut sind: Ein Listenverständnis ist eine kürzere, prägnantere Möglichkeit, eine Liste zu erstellen.
>>> some_list = [1, 2, 3, 4, 5] >>> another_list = [ x + 1 for x in some_list ] >>> another_list [2, 3, 4, 5, 6]
Seit Python 3.1 (und sogar Python 2.7) können wir dieselbe Syntax zum Erstellen von Mengen und Wörterbüchern verwenden:
>>> # Set Comprehensions >>> some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8] >>> even_set = { x for x in some_list if x % 2 == 0 } >>> even_set set([8, 2, 4]) >>> # Dict Comprehensions >>> d = { x: x % 2 == 0 for x in range(1, 11) } >>> d {1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True}
Im ersten Beispiel erstellen wir eine Menge mit eindeutigen Elementen basierend auf some_list, und die Menge enthält nur gerade Zahlen. Im Beispiel der Wörterbuchtabelle haben wir einen Schlüssel erstellt, der eine sich nicht wiederholende ganze Zahl zwischen 1 und 10 ist, und der Wert ist ein boolescher Typ, der angibt, ob der Schlüssel eine gerade Zahl ist.
Erwähnenswert ist hier auch die wörtliche Darstellung von Mengen. Eine Sammlung können wir einfach so erstellen:
>>> my_set = {1, 2, 1, 2, 3, 4} >>> my_set set([1, 2, 3, 4])
Es ist nicht erforderlich, die integrierte Funktion set() zu verwenden.
Das klingt offensichtlich, wird aber oft vergessen. Etwas zu zählen ist für die meisten Programmierer eine häufige Aufgabe und in den meisten Fällen keine große Herausforderung – hier sind ein paar Möglichkeiten, es einfacher zu machen.
Die Sammlungsbibliothek von Python verfügt über eine integrierte Unterklasse der Klasse dict, die speziell für diese Art von Aufgaben entwickelt wurde:
>>> from collections import Counter >>> c = Counter('hello world') >>> c Counter({'l': 3, 'o': 2, ' ': 1, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1}) >>> c.most_common(2) [('l', 3), ('o', 2)]
JSON ist eine sehr gute Form der Datenserialisierung und wird heute häufig von verschiedenen APIs und Webdiensten verwendet. Durch die Verwendung der in Python integrierten JSON-Verarbeitung kann die JSON-Zeichenfolge bis zu einem gewissen Grad lesbar gemacht werden. Bei großen Datenmengen erscheint sie jedoch als lange, durchgehende Linie, die für das menschliche Auge schwer zu erkennen ist.
Um JSON-Daten benutzerfreundlicher zu gestalten, können wir den Parameter indent verwenden, um schönes JSON auszugeben. Dies ist besonders nützlich, wenn Sie interaktiv an der Konsole programmieren oder protokollieren:
>>> import json >>> print(json.dumps(data)) # No indention {"status": "OK", "count": 2, "results": [{"age": 27, "name": "Oz", "lactose_intolerant": true}, {"age": 29, "name": "Joe", "lactose_intolerant": false}]} >>> print(json.dumps(data, indent=2)) # With indention { "status": "OK", "count": 2, "results": [ { "age": 27, "name": "Oz", "lactose_intolerant": true }, { "age": 29, "name": "Joe", "lactose_intolerant": false } ] }
Ebenso kann die Verwendung des integrierten pprint-Moduls dazu führen, dass alles andere schöner gedruckt wird.
Manchmal müssen wir einige einfache, sehr grundlegende RPC-ähnliche Interaktionen zwischen zwei Maschinen oder Diensten durchführen. Wir wollen Programm B verwenden, um auf einfache Weise eine Methode in Programm A aufzurufen – manchmal auf einer anderen Maschine. Nur für den internen Gebrauch.
Ich empfehle nicht, die hier beschriebenen Methoden für nicht-interne, einmalige Programmierungen zu verwenden. Wir können für so etwas ein Protokoll namens XML-RPC (entsprechend dieser Python-Bibliothek) verwenden.
Das Folgende ist ein Beispiel für die Verwendung des SimpleXMLRPCServer-Moduls zum Aufbau eines schnellen Servers zum Lesen kleiner Dateien:
from SimpleXMLRPCServer import SimpleXMLRPCServer def file_reader(file_name): with open(file_name, 'r') as f: return f.read() server = SimpleXMLRPCServer(('localhost', 8000)) server.register_introspection_functions() server.register_function(file_reader) server.serve_forever()
Kunde:
import xmlrpclib proxy = xmlrpclib.ServerProxy('http://localhost:8000/') proxy.file_reader('/tmp/secret.txt')
Auf diese Weise erhalten wir ein Remote-Tool zum Lesen von Dateien ohne externe Abhängigkeiten und mit nur wenigen Codezeilen (natürlich gibt es keine Sicherheitsmaßnahmen, sodass Sie dies nur zu Hause tun können).
Die verschiedenen Dinge, die ich hier erwähnt habe, befinden sich alle in der Python-Standardbibliothek. Wenn Sie Python installiert haben, können Sie es bereits auf diese Weise verwenden. Für viele andere Arten von Aufgaben gibt es eine große Anzahl von Community-verwalteten Bibliotheken von Drittanbietern, die Sie verwenden können.
Die folgende Liste halte ich für eine nützliche und robuste Open-Source-Bibliothek für notwendig:
Fügen Sie eine klare Berechtigungserklärung hinzu, die für Ihren Anwendungsfall gilt.
Entwicklungs- und Wartungsarbeiten sind aktiv (oder Sie können sich an der Entwicklung und Wartung beteiligen.)
Kann mithilfe von pip problemlos wiederholt installiert oder bereitgestellt werden.
Verfügen Sie über eine Testsuite mit ausreichender Testabdeckung.
Wenn Sie eine gute Bibliothek finden, die Ihren Anforderungen entspricht, brauchen Sie sich nicht zu schämen – die meisten Open-Source-Projekte freuen sich über Codespenden und Hilfe – auch wenn Sie kein Python-Meister sind.
Ursprünglicher Link: Verbessern Sie Ihre Python-Produktivität
Das obige ist der detaillierte Inhalt vonEinführung in effiziente Programmiertechniken in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!