Ich schreibe Python seit einem Jahr für eine Weile. (Nicht WEB-System)
Lassen Sie uns einige der Vorteile und Schmerzen von Python auflisten, die ich gesehen habe (Sabo). Es ist ein Memo für mich, also eine gute Idee ... Bitte weisen Sie darauf hin.
Für Google Sensei führen Sie diesen Artikel bitte nicht oben in den Suchergebnissen auf, da er nur die Suche verschmutzt. Ich werde alles tun (ich sage nichts).
TL;DR
Python hat viele schmerzhafte Spezifikationen (für mich).
Selbst wenn wir die Nachteile akzeptieren, gibt es Vorteile, die wir gerne nutzen würden. Ich denke, wir haben keine andere Wahl, als Python weiter zu verwenden.
Wie Sie wissen, ist Python-Einrückung sinnvoll. Der Block besteht aus Einrückungen.
Mit anderen Worten, dies
if True:
print("hoge")
else:
print("piyo")
print("fuga")
# =>Hoge und Fuga werden angezeigt
Und das
if True:
print("hoge")
else:
print("piyo")
print("fuga")
# =>hoge wird angezeigt
Die angezeigten Inhalte sind unterschiedlich.
……Ich kenne. Ich weiß, dass es für selbstverständlich gehalten wird. Aber denk darüber nach. Dies
if xxx:
lorem
if yyy:
ipsum
dolar
else:
sit
Und das
if xxx:
lorem
if yyy:
ipsum
dolar
else:
sit
Der einzige Unterschied ist das Einrücken. Wenn Sie eine automatische Einrückungsfunktion wie Emacs verwenden, ändert sich die Struktur je nach Editor. Findet jemand das ziemlich schmerzhaft?
Was? Schreiben Sie alle den richtigen Code auf einmal? Das kann ich nicht machen Ich schreibe eine Funktion in einer bestimmten Menge, aber das ist eine Klasse, oder? Sie können das Ganze einrücken Danach werden verschiedene interne Einrückungen korrigiert. Wenn Sie nur umziehen möchten, müssen Sie natürlich nur die erforderliche Anzahl von Leerzeichen am Zeilenanfang hinzufügen, damit dies möglich ist. Wenn es jedoch C usw. ist, wird ein unnötiger Schritt eingeklemmt und das Denken hört auf. Ich denke, das ist ein lächerlicher Nachteil.
Abgesehen davon versuche ich nicht immer, Sie zu zwingen, es in mittlere Klammern zu setzen, aber es ist möglicherweise möglich, dies als Option zu tun.
In Python werden Importe häufig am Anfang einer Zeile angeordnet, aber der Suchpfad ist derzeit schwierig.
Es kann schwierig sein, sich zu entscheiden, da es keine Standardstruktur für das Projekt gibt (nun, es ist eine Skriptsprache und dies ist unvermeidlich). Es ist jedoch NG, dass sich der Suchpfad abhängig davon ändert, wie er aufgerufen wird.
Schließlich müssen Sie zur Beruhigung sys.path bearbeiten und im aktuellen Verzeichnis hinzufügen.
Dies liegt in meiner Verantwortung, aber jedes Mal, wenn ich diese Aufgabe vergesse und nach Möglichkeiten suche, wie ich sie verbessern kann.
Python verfügt über Karten und Filter, die von funktionalen Sprachen abgeleitet sind. Es kann an Klassen angepasst werden, die iterable implementieren, und funktioniert wie der Name schon sagt.
lst: list = [1, 2, 3, 4, 5, 6]
lst2 = list(map(lambda x: x*2, lst))
lst3 = list(filter(lambda x: x % 2 == 0, lst))
print(lst2) # => [2, 4, 6, 8, 10, 12]
print(lst3) # => [2, 4, 6]
Hast du bemerkt? Ich konvertiere absichtlich die Ausgabe wie Karte in Liste. Nun, das ist nicht schmerzhaft, aber es fühlt sich subtil an. Schließlich ist die einzige Bedingung, dass "Lambda x: iterable-> iterable", also ist es der Ausgabetyp der Karte, der iterierbar ist, so dass es unvermeidlich ist, dass eine Konvertierung erforderlich ist.
In der Realität hat es jedoch eine praktische Funktion, die als Einschlussnotation bezeichnet wird. Gleiches wie oben
lst: list = [1, 2, 3, 4, 5, 6]
lst2 = [x * 2 for x in lst]
lst3 = [x for x in lst if x % 2 == 0]
print(lst2) # => [2, 4, 6, 8, 10, 12]
print(lst3) # => [2, 4, 6]
Kann geschrieben werden.
Es scheint, dass Python nicht verwendet wird, indem die virtuelle Umgebung für jedes Projekt abgeschnitten wird. Daher verwende ich Pyenv, um Versionen zu wechseln, und pipenv, um Bibliotheken für jede Umgebung zu wechseln.
Das Problem ist, dass in diesem Fall die Festplatte immer mehr verzehrt wird, z. B. eine Bibliothek für jede virtuelle Umgebung.
Ich verwende M.2 SSD mit Priorität auf Geschwindigkeit, und selbst wenn es billig ist, ist es in einer Umgebung von etwa 250 GB nüchtern.
Diesbezüglich ist es kein Problem für diejenigen, die sich immer in der Umwelt zurückziehen, wie Anaconda und Miniconda und Jupyter.
Finden Sie heraus, was Sie tun möchten-> Es gibt viele Muster, in denen Sie eine Bibliothek finden können. Um ehrlich zu sein, denke ich, dass die meisten Dinge eine Bibliothek haben.
Da ich in einem natürlichen Sprachsystem lebe, verwende ich manchmal MeCab, Human ++ usw., aber da es Wrapper für sie gibt, Es kann als Python-Objekt verwendet werden, ohne an irgendetwas zu denken. Praktisch.
Wenn es sich um einen morphologischen Analysator handelt, können Sie ihn dennoch selbst implementieren. Dies ist jedoch sehr hilfreich, da Sie keinen Wrapper für einen Syntaxanalysator wie KNP verwenden möchten.
Gibt es auch eine Nachfrage nach einer Konvertierung in voller Breite und halber Breite? Es entspricht auch dem, so dass ich es lösen kann, indem ich verschiedene Bibliotheken aufrufe, die von meinen Vorgängern erstellt wurden.
Die Bibliothek für maschinelles Lernen ist besonders umfangreich. Wenn Sie dies tun möchten, ist Python eine gute Idee.
Numpy,Pandas
Eine Bibliothek, die ein Grund sein kann, Python selbst zu verwenden. Matrixberechnung ist zu stark ... Es ist zu einfach grafisch darzustellen ...
Da es in einer virtuellen Umgebung ausgeführt werden kann, müssen Sie sich beim Ausführen des erstellten Programms keine Gedanken über die Version von Glibc machen. gut. gut.
Ich benutze Arch Linux jetzt persönlich, also ist es noch besser.
Ich habe mich oben viel beschwert, aber am Ende sind die Vorteile so groß, dass wir Python nicht verlassen können. Ich denke, wenn Numpy auch in anderen Sprachen ist ... aber ich fühle mich nicht wie Ruby oder Perl, also Python ist auch ein Kandidat als bequeme Skriptsprache.
Ich frage mich, ob es keine andere Wahl gibt, als es zu verwenden, während die durch das Design gelösten Probleme gelöst werden ...
Recommended Posts