über Tiere

Python

Pin
Send
Share
Send


  • Translations, 6. September 2018, 19:22 Uhr
  • Nikita Priyatselyuk

Python ist eine der beliebtesten und beliebtesten Programmiersprachen. Dafür gibt es mehrere Gründe:

  • Es ist leicht zu lernen.
  • Es ist sehr vielseitig.
  • Es hat viele Module und Bibliotheken.

Während der Arbeit mit Python findet jeder für sich einige nützliche Module und Tricks. In dieser Sammlung lernen Sie einige nützliche Tricks kennen.

Sammlungen

Python hat coole eingebaute Datentypen, aber manchmal verhalten sie sich nicht genau so, wie sie möchten.

Glücklicherweise verfügt die in Python integrierte Bibliothek über ein Sammlungsmodul mit praktischen zusätzlichen Datentypen:

Haben Sie sich jemals gefragt, wie Sie in Python in ein Objekt hineinschauen und seine Attribute betrachten können? Natürlich dachten sie.

XYZ Schule, Moskau, bis zu 250 000 ₽

Verwenden Sie die Befehlszeile:

Dies kann nützlich sein, wenn Sie eine interaktive Sitzung in Python durchführen oder wenn Sie Objekte und Module, mit denen Sie arbeiten, dynamisch untersuchen möchten.

Aus __zukunft__ importieren

Eine der Folgen der Popularität von Python ist, dass ständig neue Versionen entwickelt und veröffentlicht werden. Neue Versionen - neue Funktionen, aber nicht für Sie, wenn Sie veraltete verwenden.

Es ist jedoch nicht alles so schlimm. Das Modul __future__ ermöglicht den Import der Funktionalität zukünftiger Versionen von Python. Es ist wie mit einer Zeitreise oder mit Magie:

Geopy

Es kann für Programmierer schwierig sein, sich in der Geographie zurechtzufinden. Das Geopy-Modul vereinfacht jedoch Folgendes:

$ pip install geopy

Es funktioniert durch Abstrahieren der APIs verschiedener Geokodierungsdienste. Dieses Modul ermöglicht es, die vollständige Adresse des Ortes, seine Länge und Breite und sogar Höhe herauszufinden.

Es hat auch eine nützliche Distanzklasse. Es berechnet die Entfernung zwischen zwei Orten in einer praktischen Maßeinheit.

Howdoi

Haben Sie ein Problem und können sich nicht an die Lösung erinnern? Müssen Sie zu StackOverflow gehen, möchten aber das Terminal nicht verlassen?

Dann können Sie auf dieses Kommandozeilen-Tool nicht verzichten:

$ pip install howdoi

Stellen Sie eine Frage und er wird versuchen, die Antwort darauf zu finden:

Aber seien Sie vorsichtig: Es extrahiert Code aus den häufigsten Antworten in StackOverflow und liefert nicht immer nützliche Informationen:

$ howdoi verlasse vim

Soll ich weiterhin Python-Lektionen übersetzen?

Wie sich kürzlich herausstellte, gibt es auf YouTube bereits gesprochene Bucky Roberts-Videos zur Python3-Programmierung. Hier können Sie sie unter folgendem Link ansehen:

Melden Sie sich im Kommentar ab, wenn ich ihn weiter äußern soll, auch wenn dieses Material bereits übersetzt wurde. Vielen Dank für Ihre Aufmerksamkeit.

Grundlagen Teil 1. Für Säuglinge.

Es wird davon ausgegangen, dass der Beitrag http://pikabu.ru/story/hello_world_4265035 bereits gelesen wurde oder Sie über eine Linux-Distribution verfügen.

Es wird davon ausgegangen, dass das Publikum interessiert sein wird, und wenn dies der Fall ist, werde ich noch ein paar Posts über Python schreiben, um mich mit der Syntax, den Standarddatenstrukturen und einigen Standardbibliotheken vertraut zu machen und mit der Entwicklung von Django fortzufahren.

Es wird davon ausgegangen, dass das Publikum nicht aus gemüseähnlichen Amöben besteht, sondern aus entwickelten Menschen, die bereit sind, ihre Schädelschachtel nicht nur zum Essen zu verwenden.

Um loszulegen, locken Sie. Sie können eine Menge darüber schreiben, wie cool Python ist, was es für BigData, Datensätze, Webentwicklung und alles andere verwendet. Aber das sind alles trockene Worte. Daher werde ich einige Beispiele geben, in denen Python als Hauptsprache verwendet wird.

Instagram - jedermanns Lieblingshosting von Fotos von Essen und verdammten blöden Zügen. Ja, es ist in Python geschrieben. Darüber hinaus wird Django als Framework herangezogen, zu dem wir kriechen werden, wenn es Leute gibt, die neben mir kriechen wollen. Außerdem nahmen sie den HTTP-Server Gunicorn, auf den wir auch kriechen. Als Datenbank verwenden sie PostgreSQL - mein Lieblings-RDBMS, und deshalb können auch wir dorthin kriechen.

Reddit ist ein lustiger Lachdienst, ich denke, jeder hat sowieso davon gehört. Es ist auch in Python geschrieben, aber im Pyramid Framework, nicht in Django. Als Datenbank werden zwei Datenbanken verwendet: Cassandra und PostgreSQL. Memcached und Facebook Mcrouter werden als Cache verwendet. Als Nachrichtenbroker wird RabbitMQ verwendet.Der Quellcode ist hier https://github.com/reddit/reddit öffentlich verfügbar

exchange.livejournal.com - LiveJournal-Bloggeraustausch, der kürzlich eröffnet wurde. Warum ist sie hier? Weil ich an seiner Entwicklung teilgenommen habe. Es ist auch in Django mit der PostgreSQL-Datenbank geschrieben.

Hiermit endet und beginnt mein ungeliebter Part - Loops, Branches und Variablen.

Alle Codeteile werden Screenshots des Jupyter-Notizbuchs sein, zum einen, weil es für mich bequem ist, darin zu schreiben, und zum anderen, weil es nichts gibt, das den Code eines anderen kopiert.

Python ist eine Sprache mit starker dynamischer Typisierung. Was bedeutet das?

- Wenn Sie die Zahl 5 mit der Zeichenfolge '7' hinzufügen möchten, werden Sie gescholten. Dies wird als starkes Tippen bezeichnet. Keine Konvertierungen in den "allgemeineren" Typ.

- Wenn eine Zahl in der Variablen x gespeichert wurde, bedeutet dies nicht, dass ihr kein String zugewiesen werden kann. Das ist dynamisches Tippen. Der Typ der Variablen muss natürlich nirgendwo angegeben werden.

Ein nettes Feature ist die parallele Zuordnung. Der Wertaustausch wird ebenfalls unterstützt.

Es gibt auch Mehrfachbelegungen die ich stark Ich empfehle nicht, es gedankenlos zu verwenden (dies gilt für nicht planare Datentypen, auf die wir später noch eingehen werden):

Mit Variablen vorerst.

Im Gegensatz zur C-ähnlichen Syntax haben wir weder geschweifte Klammern zum Hervorheben von Blöcken noch Klammern zum Hervorheben eines bedingten Ausdrucks (tatsächlich steht nichts dem Umschließen der Bedingung in Klammern entgegen). Blöcke werden NUR mit Einzügen hervorgehoben. Es gibt keine Schalter, nur wenn, elif und sonst. Das folgende Beispiel, denke ich, wird alles für mich erklären:

Und jetzt eine kleine Überraschung. Trotz der strengen Typisierung der Sprache werden Vergleiche zwischen einigen ungleichen Datentypen (int, float, Decimal) unterstützt. Beispiel: 5 == 5.0 gibt True zurück, obwohl 5 eine Ganzzahl und 5.0 ein Komma ist. Aber es zu benutzen, wird als schlechte Form angesehen.

Wenn Sie bis zu diesem Tag das Wort "Iterator" nicht kannten und nur Zyklen nach Indizes schrieben, wie zum Beispiel für (int i = 0, i

Für reguläre Indexschleifen gibt es einen Bereichsgenerator. Über Generatoren zu spät.

Funktionen in Python werden auf zwei Arten deklariert:

Es wird jedoch dringend empfohlen, die zweite Methode von STRICTLY ADJUST zu verwenden, um normale Funktionen zu definieren. Lambda-Funktionen (oder anonyme Funktionen) werden nur benötigt, um ihnen ein Argument an Funktionen höherer Ordnung zu übergeben.

Hier stellten sich wahrscheinlich sofort zwei Fragen:

Wie kann ein Argument an eine andere Funktion übergeben werden?

Was ist eine Funktion höherer Ordnung?

Weil Python ist objektorientiert, daher ist alles in ihm ein Objekt. Und die Funktion auch. Ein Argument für eine Funktion kann ein beliebiges Objekt sein, einschließlich und Funktion:

In diesem Beispiel gibt es viele interessante Dinge:

1) Nach dem Definieren der Funktion (def) können Sie den sogenannten Docstring eingeben, der beschreibt, was die Funktion tut. Gleichzeitig wird dieser Dockstring im Attribut __doc__ des Funktionsobjekts gespeichert (was nur noch einmal anzeigt, dass die Funktion ein Objekt ist).

2) __name__ Attribut enthält den Namen des Objekts (Funktion oder Klasse)

3) h ist in diesem Fall eine Funktion höherer Ordnung. Eine Funktion höherer Ordnung ist eine Funktion, die eine andere Funktion akzeptiert oder zurückgibt. Dies wird nützlich sein für Dekorateure, über die auch später.

Funktionen können anderen Variablen zugewiesen werden:

Der Name (__name__) bleibt jedoch gleich, weil Tatsächlich beziehen sich f und same_func nur auf die Funktion.

Auch ich bin anscheinend schon weit gewandert. Wenn ich im nächsten Teil das Interesse des Publikums sehe, werde ich über Standarddatenstrukturen (Listen, Tupel, Wörterbücher, Mengen) sprechen und darüber, was sie sind und wofür sie verwendet werden.

P.S. Der Beitrag wurde ohne Vorbereitung geschrieben, direkt an den Picabu-Post-Editor, über alle Mängel in den Kommentaren schreiben, mit Pantoffeln und Tomaten werfen.

Für Anfänger zum Programmieren lernen (Python)

Es sollte beachtet werden, dass Python die beste Wahl für Anfänger ist, die mit dem Programmieren beginnen möchten. Dieses Thema ist jedoch nicht für einen Beitrag bestimmt. Und das Programmierstudium sollte nicht nur auf einer Sprache aufbauen, sondern mehrere Komponenten umfassen. Dieser Beitrag richtet sich jedoch an Personen, die wissen, was Python lernen möchte, aber nicht wissen, welche Art von Literatur sie wählen sollen.

1.Michael Dawson - Programmierung in Python

Es lohnt sich, mit diesem Buch zu beginnen. Ohne sich übermäßig mit der Sprache zu beschäftigen, werden ihre Grundlagen berücksichtigt.Das gesamte Material wird durch viele Beispiele untermauert, die sich hauptsächlich auf Spielthemen beziehen. Das Kapitel ist wie folgt aufgebaut: Ganz am Anfang steht ein Programm, das Sie ähnlich wie nach dem Lesen des Kapitels schreiben können, aber beim Lernen stoßen Sie auf eine Reihe einfacherer Programme, die zum Verständnis des Hauptprogramms führen. Dies überflutet das Buch buchstäblich mit Beispielen und bietet den Anfängern die notwendige Übung. Nun, natürlich ist es wichtig, eigene Programme zu erstellen.

Ein exzellentes Buch, aber für einen Anfänger zu detailliert. Es lohnt sich, es in Verbindung mit der Praxis zu lesen. So etwas wie: Sie wollten ein Programm schreiben, aber es fehlen Ihnen tiefere Kenntnisse, um es bequemer, kürzer, schöner usw. zu machen.

3. Mark Summerfield - Python 3-Programmierung

Es gibt die gleiche Dynamik wie im ersten Buch, es gibt keine unnötigen Informationen, aber es ist komplizierter, alles ist nicht so zerkaut wie bei Dawson. Es ist erwähnenswert, dass die Entwicklung dieses Buches nach dem Lesen von Dawson nicht besonders schwierig ist.

4. Mark Lutz - Python-Programmierung

Das Buch lehrt Sie, das in "Learning Python 4th Edition" erworbene Wissen anzuwenden, ist aber auch mit überflüssigen Informationen für Anfänger überladen, die nach Dawson und Summerfield viel leichter zu erkennen sein werden. Dieses Buch beendet das anfängliche Studium der Sprache. Nachdem Sie es gemeistert haben, können Sie weiterarbeiten.

Ich hoffe jemand hilft bei dieser Auswahl. Viel Spaß beim Lesen und Lernen.

Yandex.Translator für Linux auf der Python-GUI

Vor langer Zeit wurde ein mehrsprachiger Online-Übersetzer mit geschlossenem Browser benötigt.

Nein, ich kann es nicht ablehnen, das Wörterbuch in "besonders schwierigen" Fällen zu verwenden, aber manchmal muss ich einen ziemlich großen Text lesen und nicht alle Wörter, die ich kenne, wie der Kontext verloren geht.

Das Translate-Shell-Ding ist recht praktisch, besonders wenn Sie beispielsweise in Vi / vim schreiben. Wechseln Sie zur nächsten Konsole und übersetzen Sie.

Die Tasten sind einfach und leicht zu merken.

Aber das war wie immer nicht genug. Ich wollte Grafiken.

Das Arbeiten in SublimeText und Zeal ist etwas bequemer als eine reine Konsole.

Hmm ... Dachte nach, dachte nach und beschloss, den Übersetzer an einen Hotkey zu binden.

Die Wahl fiel auf gxmessage. Zenity gefiel mir nicht, ich weiß nicht mehr warum.

Der Code wurde geschrieben:

Es hat mir eine Weile gepasst. Um "control + 1" von Englisch, "control + 2" zu Englisch. Gut

Aber dann fing die Übersetzungs-Shell an zu scheitern.

Ich weiß nicht, was mit den Entwicklern passiert ist, aber es hat mich wirklich verärgert.

Ich habe entschieden, dass es Zeit ist, ich habe lange nicht mehr in Python geschrieben.

Eine kurze Google-Suche führte mich zu Yandex.API, Python und GTK + 3 in Form eines Gi-Moduls.

Warum gi, weil du normalerweise in PyQt5 geschrieben hast? Bei meinem Auto geht es viel schneller. Die Maschine ist nicht neu, auch der Speicher ist (nach modernen Maßstäben) nicht so heiß.

Als Ergebnis habe ich einen Auto-Übersetzer für einen Hotkey.

Vielen Dank für Ihre Aufmerksamkeit.

Hallo Welt!

Ich habe hier über eine mächtige, einfache, interessante Bibliothek geschrieben, die ich fast täglich benutze, aber plötzlich wurde mir klar, dass es besser ist, den ersten Beitrag nur zum Auffinden von Fakten zu verfassen, für diejenigen, die völlig neu sind. :)

Deshalb werden wir heute ein wenig darüber sprechen, was Python ist und versuchen, es auf unseren Computer zu bekommen.

Wenn Sie bereits in Python programmieren, ist dieser Beitrag eindeutig nicht für Sie geeignet. :) Vielleicht liest du es gar nicht, sondern schreibst hier dein eigenes über etwas Interessantes aus deiner Erfahrung! Wie erwartet mit Vorliebe und Dichtern. ,)

Wie uns eine zuverlässige Quelle (Wikipedia) mitteilt, ist Python (ich spreche Python aus, einige russischsprachige Leute sagen Python) eine universelle Programmiersprache, die darauf abzielt, die Produktivität der Entwickler und die Lesbarkeit des Codes zu verbessern. Mit anderen Worten, Sie können schnell Code darauf schreiben und verstehen, was ein Nachbar geschrieben hat.

Trotz der offensichtlichen Einfachheit der Definition bietet sie ein enormes Potenzial dank der Unterstützung mehrerer Programmierparadigmen auf einmal, einer großen Anzahl von Funktionen (in der Standardbibliothek) und natürlich der Erweiterbarkeit dank einer großen Anzahl einfach zu installierender Nicht-Standardbibliotheken.

Wenden sie es in der Praxis an?

Natürlich! Python ist eine sehr verbreitete Sprache! Mit ihm können Sie Sites erstellen, Daten verarbeiten, mit maschinellem Lernen arbeiten und vieles mehr. Es wird von vielen großen Unternehmen verwendet (zum Beispiel von Google, das noch weit entfernt ist).Mit ihm können Sie einfache Skripte für den Alltag erstellen und sich ernsthaft mit der wissenschaftlichen und kommerziellen Entwicklung befassen.

Interessiert an? Dann lass uns versuchen, etwas in Python zu schreiben und auszuführen! :)

Es ist wichtig zu verstehen, dass es Möglichkeiten der Dunkelheit gibt, dies zu tun! Sie können Ihr Programm sogar in einer leistungsstarken Entwicklungsumgebung mit Syntaxhervorhebung und anderen Extras schreiben, sogar in einem normalen Notizbuch, sogar im Internet (und an derselben Stelle ausführen). Ich denke das wird ein separater Beitrag. Im Moment werde ich nur zeigen, wie Sie Befehle im Python-Interpreter ausführen können.

Und gleich ein paar Worte zu letzterem, denn wenn Sie es lesen, wissen Sie vielleicht nicht, was es ist.

Python ist eine interpretierte Sprache. Kurz gesagt bedeutet dies, dass seine Anweisungen nacheinander ausgeführt (interpretiert) werden, ohne alles auf einmal zu kompilieren, wie zum Beispiel in der C-Sprache. Der Dolmetscher ist nur ein spezielles Programm, das sich mit Dolmetschen befasst.

Um die Python-Sprache zu verwenden, müssen Sie die Implementierung von der offiziellen Website https://www.python.org/downloads/ herunterladen und installieren.

Ich werde ein Beispiel für die 3. Reihe der Python-Sprache (3.5.1) geben, daher empfehle ich, sie herunterzuladen. Für Windows kann dies direkt über diesen Link erfolgen. Vergessen Sie bei der Installation nicht, das Kästchen anzukreuzenZum PFAD hinzufügen, es wird dein Leben in der Zukunft vereinfachen.

Herunterladen und installieren? Großartig! Lassen Sie uns den Interpreter ausführen. Öffnen Sie die Befehlszeile (drücken Sie Start cmd) und geben Sie dort ein:

Der Dolmetscher läuft! Ja, so einfach ist das! Wenn alles richtig gemacht ist, wird es so etwas wie geben:

Führen Sie nun den ersten Befehl aus! Geben Sie ein:

Ja, sie hat gerade gedruckt, was in Klammern steht, in Anführungszeichen auf dem Bildschirm! Dies führte die Standard-Python-Sprachfunktion aus - print (). Wie Sie hier sehen können, müssen Sie im Gegensatz zu C zum Beispiel nichts daran anhängen, Sie müssen es in keiner Weise trennen (in diesem speziellen Fall), Sie müssen nichts danach setzen.

Im Allgemeinen druckt der Interpreter die Zeichenfolge in Anführungszeichen und ohne Anführungszeichen print () in diesem Modus, wie eine Zahl (nur Zahlen müssen ohne Anführungszeichen geschrieben werden), sowie auch arithmetische Operationen auf Zahlen und Variablen, aber ich würde Ihnen nicht raten, sich daran zu gewöhnen, denn wenn Sie das Programm aus einer Datei ausführen, dann ähnliche Auslassung print () wird nichts als einen Fehler verursachen.

Übrigens über Rechenoperationen. Sie können sie ohne Gewissensbisse direkt in Funktion setzen print (). Versuchen Sie zum Beispiel, in der Reihenfolge:

drucken (100 + 1)
drucken (42/7)
print (111111111 * 111111111)

Das ist alles für jetzt! Vielen Dank für Ihre Aufmerksamkeit! Es ist sehr schwierig, den ersten Beitrag in der gesamten Community zu schreiben - die Leserstufe ist nicht ganz klar. Deshalb habe ich mich entschlossen, es absoluten Anfängern zu widmen. Ich hoffe nicht verloren. :)

Vielen Dank für Ihre Aufmerksamkeit!

Wird Python interpretiert oder kompiliert?

Dies ist eine häufige Ursache für Missverständnisse bei Python-Neulingen.

Das erste, was Sie verstehen sollten: „Python“ ist die Benutzeroberfläche. Es gibt eine Spezifikation, die beschreibt, was Python tun und wie es sich verhalten soll (was für jede Schnittstelle gilt). Und es gibt mehrere Implementierungen (was auch für jede Schnittstelle gilt).

Das zweite: "interpretiert" und "kompiliert" sind die Eigenschaften der Implementierung, aber nicht der Schnittstelle.

Die Frage selbst ist also nicht ganz richtig.

Bei der gängigsten Implementierung (CPython: geschrieben in C, oft einfach als "Python" bezeichnet, und natürlich der, die Sie verwenden, wenn Sie keine Ahnung haben, was ich interpretiere) lautet die Antwort: interpretiert, mit etwas Kompilierung. CPython kompiliert * den Python-Quellcode in einen Bytecode, interpretiert diesen Bytecode und startet ihn dabei.

* Hinweis: Dies ist keine „Zusammenstellung“ im herkömmlichen Sinne. Normalerweise denken wir, dass „Kompilierung“ eine Umwandlung von einer Hochsprache in Maschinencode ist. In gewisser Hinsicht ist dies jedoch eine „Zusammenstellung“.

Sehen wir uns diese Antwort genauer an, da wir dadurch einige der Konzepte verstehen, die in diesem Artikel auf uns warten.

Bytecode oder Maschinencode

Es ist sehr wichtig, den Unterschied zwischen Bytecode und Maschinencode (oder nativem Code) zu verstehen. Vielleicht ist der einfachste Weg, dies zu verstehen, ein Beispiel:

- C wird in Maschinencode übersetzt, der anschließend direkt vom Prozessor gestartet wird. Jeder Befehl zwingt den Prozessor, verschiedene Aktionen auszuführen.
- Java wird in Bytecode kompiliert, der anschließend auf der Java Virtual Machine (JVM) ausgeführt wird, einem abstrakten Computer, auf dem Programme ausgeführt werden. Jede Anweisung wird von einer JVM verarbeitet, die mit einem Computer interagiert.

Stark vereinfacht: Maschinencode ist viel schneller, aber Bytecode ist besser portabel und sicher.

Der Maschinencode kann je nach Maschine unterschiedlich sein, während der Bytecode auf allen Maschinen gleich ist. Wir können sagen, dass der Maschinencode für Ihre Konfiguration optimiert ist.

Zurück zu CPython sieht die Operationskette wie folgt aus:

1. CPython kompiliert Ihren Python-Quellcode in Bytecode.
2. Dieser Bytecode wird auf der virtuellen CPython-Maschine ausgeführt.

Anfänger gehen häufig davon aus, dass Python aufgrund des Vorhandenseins von .pyc-Dateien kompiliert wird. Dies trifft zum Teil zu: .pyc-Dateien werden als Bytecode kompiliert und anschließend interpretiert. Wenn Sie also Ihren Code in Python ausgeführt haben und eine .pyc-Datei haben, funktioniert dies beim zweiten Mal schneller, da keine Neukompilierung in Bytecode erforderlich ist.

Alternative virtuelle Maschinen: Jython, IronPython und andere

Wie ich oben sagte, hat Python mehrere Implementierungen. Wie bereits erwähnt, ist CPython am beliebtesten. Diese Version von Python ist in C geschrieben und wird als "Standard" -Implementierung angesehen.

Aber was ist mit Alternativen? Eine der bekanntesten ist Jython, eine Python-Implementierung in Java, die die JVM verwendet. Während CPython Bytecode für die Ausführung auf der CPython-VM generiert, generiert Jython Java-Bytecode für die Ausführung auf der JVM (dies entspricht dem Kompilieren des Java-Programms).

„Warum müssen Sie möglicherweise eine alternative Implementierung verwenden?“, Fragen Sie. Nun, für den Anfang, Unterschiedliche Implementierungen vertragen sich gut mit unterschiedlichen Technologien.

CPython erleichtert das Schreiben von C-Erweiterungen für Python-Code, da diese am Ende vom C-Interpreter gestartet werden. Jython vereinfacht wiederum die Arbeit mit anderen Java-Programmen: Sie können ohne zusätzlichen Aufwand beliebige Java-Klassen importieren und Ihre Java-Klassen aus Jython-Programmen aufrufen und verwenden. (Hinweis: Wenn Sie nicht ernsthaft darüber nachgedacht haben, ist das ziemlich verrückt. Wir haben die Zeit erlebt, in der Sie verschiedene Sprachen mischen und zu einer Entität kompilieren können. Wie Rostin bemerkte, sind Programme, die Fortran- und C-Code mischen, schon vor langer Zeit erschienen. es ist also nicht ganz neu, aber es ist immer noch cool.)

Als Beispiel ist hier der richtige Jython-Code:

Java HotSpot (TM) 64-Bit-Server-VM (Apple Inc.) unter java1.6.0_51
>>> aus java.util importieren Sie HashSet
>>> s = HashSet (5)
>>> an add ("Foo")
>>> an add ("Bar")
>>> s
Foo Bar

IronPython ist eine weitere beliebte Python-Implementierung, die vollständig in C # für .NET geschrieben wurde. Insbesondere wird es auf der virtuellen .NET-Maschine ausgeführt, sofern Sie dies in der Common Language Runtime (CLR) von Microsoft als vergleichbar mit der JVM bezeichnen können.

Man könnte sagen, dass Jython: Java :: IronPython: C #. Sie arbeiten auf den entsprechenden virtuellen Maschinen, es ist möglich, C # -Klassen in IronPython-Code und Java-Klassen in Jython-Code usw. zu importieren.

Es ist durchaus möglich zu überleben, ohne etwas anderes als CPython zu berühren. Wenn Sie jedoch zu anderen Implementierungen übergehen, erhalten Sie einen Vorteil, hauptsächlich aufgrund des verwendeten Technologie-Stacks. Verwenden Sie viele JVM-basierte Sprachen? Jython passt vielleicht zu Ihnen. Ist alles auf .NET? Es könnte einen Versuch wert sein, IronPython (und vielleicht hast du es bereits getan).

Übrigens, obwohl dies kein Grund ist, zu einer anderen Implementierung zu wechseln, ist es erwähnenswert, dass sich diese Implementierungen tatsächlich im Verhalten unterscheiden. Dies gilt nicht nur für die Interpretation von Python-Code. Diese Unterschiede sind jedoch in der Regel nicht signifikant, sie verschwinden und treten im Laufe der Zeit aufgrund der aktiven Entwicklung auf. IronPython verwendet beispielsweise standardmäßig Unicode-Zeichenfolgen, CPython verwendet jedoch ASCII in 2.x-Versionen (wobei ein UnicodeEncodeError-Fehler für Nicht-ASCII-Zeichen ausgegeben wird) und unterstützt in Version 3.x weiterhin standardmäßig Unicode-Zeichen.

Schnelle Zusammenstellung (Just-in-Time-Zusammenstellung): PyPy und die Zukunft

Wir haben also eine Python-Implementierung in C, eine weitere in Java und eine dritte in C #. Der nächste logische Schritt: Implementierung von Python, geschrieben in ... Python. (Ein geschulter Leser wird feststellen, dass diese Aussage etwas irreführend ist).

Deshalb kann es verwirrend sein. Lassen Sie uns zunächst die Kompilierung im laufenden Betrieb (Just-in-Time oder JIT) besprechen.

Jit. Warum und wie

Ich möchte Sie daran erinnern, dass der native Maschinencode viel schneller ist als der Bytecode. Was wäre, wenn Sie einen Teil des Bytecodes kompilieren und als systemeigenen Code ausführen könnten? Ich müsste einen gewissen Preis (mit anderen Worten: Zeit) für das Kompilieren des Bytecodes zahlen, aber wenn das Ergebnis schneller funktioniert, ist es großartig! Dies motiviert die JIT-Kompilierung, eine Hybridtechnik, die die Vorteile von Interpreten und Compilern kombiniert. Kurz gesagt: JIT versucht, das Interpretationssystem mithilfe der Kompilierung zu beschleunigen.

Hier ist zum Beispiel ein gängiger JIT-Ansatz:

  1. Definieren Sie einen Bytecode, der häufig ausgeführt wird.
  2. Kompilieren Sie es in systemeigenen Computercode.
  3. Cache das Ergebnis.
  4. Verwenden Sie immer dann, wenn Sie denselben Bytecode ausführen müssen, einen bereits kompilierten Maschinencode und profitieren Sie von den Vorteilen (insbesondere von der Geschwindigkeitssteigerung).

Das ist der springende Punkt bei PyPy: Verwenden von JIT in Python (im Anhang finden Sie frühere Versuche). Natürlich gibt es noch andere Ziele: PyPy ist plattformübergreifend ausgerichtet und arbeitet mit wenig Arbeitsspeicher und stapelloser Unterstützung (Verzicht auf den C-Sprachaufrufstapel zugunsten seines eigenen Stapels). JIT ist jedoch der Hauptvorteil. Basierend auf Zeittests beträgt der durchschnittliche Beschleunigungsfaktor 6,27. Detailliertere Daten können dem Schema von PyPy Speed ​​Center entnommen werden:

PyPy ist schwer herauszufinden

PyPy hat ein riesiges Potenzial und ist derzeit gut mit CPython kompatibel (so dass Sie Flask, Django usw. darauf ausführen können).

Aber mit PyPy gibt es viel Verwirrung. (Schätzen Sie zum Beispiel diesen sinnlosen Vorschlag, PyPyPy zu erstellen ...). Meiner Meinung nach ist der Hauptgrund, dass PyPy zur gleichen Zeit ist:

1. In RPython geschriebener Python-Interpreter (nicht Python (ich habe Sie zuvor betrogen)). RPython ist eine Teilmenge von Python mit statischer Typisierung. Gründliche Gespräche über Typen sind in Python „generell unmöglich“, warum ist das so schwierig? bedenken Sie Folgendes:

x = random.choice (1, "foo")

Dies ist der richtige Python-Code (danke an Ademan). Welcher Typ ist x? Wie können wir Variablentypen diskutieren, wenn Typen nicht einmal erzwungen werden? In RPython opfern wir etwas Flexibilität, aber im Gegenzug haben wir die Möglichkeit, den Speicher immer mehr zu verwalten, was bei der Optimierung hilft.

2. Ein Compiler, der RPython-Code in verschiedene Formate kompiliert und JIT unterstützt. Die Standardplattform ist C, dh der RPython-in-C-Compiler. Sie können jedoch auch JVM und andere als Zielplattform auswählen.

Zur Vereinfachung der Beschreibung werde ich sie PyPy (1) und PyPy (2) nennen.

Warum brauchen Sie diese beiden Dinge und warum - in einem Set? Stellen Sie es sich so vor: PyPy (1) ist ein in RPython geschriebener Interpreter. Das heißt, er nimmt den Benutzercode in Python und kompiliert ihn in Bytecode. Aber damit der Interpreter selbst (in RPython geschrieben) funktioniert, muss er von einer anderen Piton-Implementierung interpretiert werden, oder?

Sie können den Interpreter also einfach mit CPython starten. Aber es wird nicht zu schnell sein.

Stattdessen verwenden wir PyPy (2) (als RPython-Toolchain bezeichnet), um den PyPy-Interpreter in Code für eine andere Plattform (wie C, JVM oder CLI) zu kompilieren, die auf dem Zielcomputer mit JIT ausgeführt werden soll. Das ist magisch: PyPy fügt dem Interpreter dynamisch JIT hinzu und generiert einen eigenen Compiler! (Auch dies ist verrückt: Wir kompilieren den Interpreter, indem wir einen weiteren separaten, eigenständigen Compiler hinzufügen.)

Am Ende wird das Ergebnis eine eigenständige ausführbare Datei sein, die den Python-Quellcode interpretiert und die JIT-Optimierung verwendet. Was du brauchst! Es ist schwer zu verstehen, aber vielleicht hilft dieses Schema:

Die wahre Schönheit von PyPy ist, dass wir eine Reihe verschiedener Python-Interpreter auf RPython schreiben können, ohne uns um JIT sorgen zu müssen (abgesehen von ein paar Details). Danach implementiert PyPy JIT für uns mithilfe der RPython Toolchain / PyPy (2).

Wenn Sie tiefer in die Abstraktion eintauchen, können Sie theoretisch einen Interpreter für jede Sprache schreiben, ihn an PyPy weiterleiten und eine JIT für diese Sprache erhalten. Dies ist möglich, weil PyPy sich auf die Optimierung des Interpreters selbst konzentriert und nicht auf die Details der Sprache, die er interpretiert.

Als Exkurs möchte ich festhalten, dass JIT selbst absolut erstaunlich ist. Er verwendet eine Technik namens "Tracing", die wie folgt funktioniert:

  1. Führen Sie den Interpreter aus und interpretieren Sie alles (ohne ein JIT hinzuzufügen).
  2. Einfache Profilerstellung für interpretierten Code.
  3. Identifizieren Sie Vorgänge, die bereits zuvor ausgeführt wurden.
  4. Kompilieren Sie diese Codeteile in Maschinencode.

Sie können mehr aus dieser leicht verfügbaren und sehr interessanten Publikation lernen.

Zusammenfassend: Wir verwenden den PyPy-Compiler RPython-in-C (oder eine andere Zielplattformform), um den auf RPython implementierten PyPu-Interpreter zu kompilieren.

Fazit

Warum ist das alles so erstaunlich? Warum lohnt es sich, diese verrückte Idee zu verfolgen? Meiner Meinung nach hat Alex Gaynor dies in seinem Blog sehr gut erklärt: „Für PyPy liegt die Zukunft darin, dass es schneller, flexibler und die beste Plattform für die Python-Entwicklung ist.“

  • Es ist schnell - weil es den Quellcode in nativen Code kompiliert (mit JIT).
  • Es ist flexibel - weil es dem Interpreter ohne großen Aufwand JIT hinzufügt.
  • Es ist (wieder) flexibel - weil Sie Interpreter in RPython schreiben können, was die Erweiterung im Vergleich zu demselben C vereinfacht (tatsächlich vereinfacht es sich so sehr, dass es sogar eine Anweisung zum Schreiben Ihrer eigenen Interpreter gibt).

Zusatz: andere Namen, die Sie vielleicht gehört haben

Python 3000 (Py3k): Alternativer Name für Python 3.0, die 2008 eingeführte Hauptversion von Python mit Abwärtskompatibilität. Das Py3k-Team prognostizierte, dass die neue Version etwa fünf Jahre brauchen würde, um ihre Wurzeln zu schlagen. Und während die meisten (Achtung: weit hergeholten) Python-Entwickler weiterhin Python 2.x verwenden, fangen die Leute an, mehr über Py3k nachzudenken.

Cython: Eine Obermenge von Python, die die Fähigkeit enthält, C-Funktionen aufzurufen.

  • Ziel: Lassen Sie uns C-Erweiterungen für Python-Programme schreiben.
  • Außerdem können Sie vorhandenen Python-Code mit statischer Typisierung versehen, um nach dem erneuten Kompilieren eine C-ähnliche Leistung zu erzielen.
  • Erinnert an PyPy, aber es ist nicht dasselbe. Bei Cython erzwingen Sie die Eingabe des Benutzercodes, bevor Sie ihn an den Compiler senden. In PyPy schreiben Sie gutes altes Python, und der Compiler ist für jede Optimierung verantwortlich.

Numba: Ein "spezialisierter Just-in-Time-Compiler", der JIT zu Pythons kommentiertem Code hinzufügt. Einfach ausgedrückt, Sie geben ihm Hinweise, und er beschleunigt einige Teile Ihres Codes. Numba ist Teil der Anaconda-Distributionssuite von Datenanalyse- und Datenverwaltungspaketpaketen.

IPython: ganz anders als alles, was wir besprochen haben. Computerumgebung für Python. Interaktiv mit Unterstützung für GUI-Pakete, Browser usw.

Psyco: Python-Erweiterungsmodul, einer der ersten Versuche von Python im JIT-Bereich. Es wurde lange als "nicht unterstützt und tot" markiert. Psyco-Chefentwickler Armin Rigo arbeitet derzeit an PyPy.

Sprachbindungen

  • RubyPython: Eine Brücke zwischen virtuellen Maschinen mit Ruby und Python. Ermöglicht das Einbetten von Python-Code in Ruby-Code. Sie geben an, wo Python beginnt und endet, und RubyPython ermöglicht die Datenübertragung zwischen virtuellen Maschinen.
  • PyObjc: Eine Sprachverbindung zwischen Python und Objective-C, die sich wie eine Brücke zwischen ihnen verhält. In der Praxis bedeutet dies, dass Sie Objective-C-Bibliotheken (einschließlich allem, was Sie zum Erstellen einer Anwendung für OS X benötigen) in Python-Code und Python-Module in Objective-C-Code verwenden können. Dies ist praktisch, da CPython in C geschrieben ist, einer Teilmenge von Objective-C.
  • PyQt: Mit PyObjc können Sie Python mit OS X-GUI-Komponenten verknüpfen, mit PyQt hingegen auch mit dem Qt-Framework. Dies ermöglicht es, vollständige grafische Oberflächen zu erstellen, auf SQL-Datenbanken zuzugreifen und so weiter. Ein weiteres Tool, das darauf abzielt, die Einfachheit von Python auf andere Frameworks zu portieren.

Javascript-Frameworks

  • Pyjamas: Ein Framework zum Erstellen von Web- und Desktopanwendungen in Python. Enthält einen Python-in-JavaScript-Compiler, eine Reihe von Widgets und einige andere Tools.
  • Brython: Eine in Javascript geschriebene virtuelle Python-Maschine. Ermöglicht das Ausführen von Py3k-Code in einem Webbrowser.

5 lustige und epische Geschichten von Pick-ups über Silvester

Erinnerst du dich, was dir an Silvester passiert ist? Sagen wir, wie sie in der Nacht vom 30. auf den 31. Dezember für Mandarinen in der Schlange standen oder das Hauptgericht verbrannten. Pikabushniki teilte mit uns süße, seltsame und lustige Fälle. In diesem Beitrag veröffentlichen wir die fünf besten Geschichten und geben Geschenke.

Wenn Sie noch keinen Beitrag gesehen haben, in dem wir einen Story-Wettbewerb angekündigt haben, teilen wir Ihnen dies mit. Wir haben es zusammen mit Yandex gestartet. Shev und die Autoren der fünf interessantesten Geschichten, so die Jury, haben versprochen, Sets für das Neujahrsessen zu geben. Kürzlich hat der Service fünf Weihnachtsmenüs herausgebracht: mit Hühnchen. Rindfleisch, Schweinefleisch, Ente und Fisch. Sie sammelten die wichtigsten warmen Gerichte, nicht-Standard-Salate und Snacks. Was erzählen wir Ihnen? Wir haben hier schon getestet.

Es gibt immer mehr Teilnehmer als Gewinner. Damit niemand leer ausgeht: Wir geben einen Aktionscode für einen Rabatt von 800 Rubel. Wenn Sie ein Abendessen mit Rabatt bestellen möchten, geben Sie bei der Bestellung den Aktionscode ein Picabu. Die Aktion ist gültig für einen Betrag von 4000 Rubel bis zum 28. Dezember.

Jetzt ist die Zeit für die Gewinnergeschichten!

1. "Sehr stimmhafter Champagner"

„Freunde haben beschlossen, das neue Jahr zu Hause zu feiern. Sie luden ein paar Freunde ein, der Tisch war voller Salate, Gurken, Sandwiches mit Kaviar und anderen Leckereien. Und jetzt, ein paar Minuten vor dem Glockenspiel, stehen alle auf, der Besitzer öffnet den Champagner unter den allgemeinen Vorfreuden. Und dann springt der Korken aus der Flasche und fliegt in einen Glasleuchter, der direkt über dem Tisch hängt. Lautes Klingeln, Rasseln von Fragmenten, die in Teller fallen. Also musste ich alles Essen wegwerfen und schnell etwas auf eine neue Art abschießen. Die Gastgeberin wird sich noch lange an das neue Jahr erinnern. Ich wünsche allen, in jeder Situation optimistisch zu bleiben :) "

2. "Mamas Assistentin"

"Ich habe nur eine lustige Geschichte über das Neujahrsessen - als meine Mutter am 31. Dezember alle Hackfrüchte kochte, auf Geschäftsreise davonlief und mich anwies, alles mit einem flachen zu säubern. Aber ich bin die Assistentin meiner Mutter. Ich habe alles geputzt, dann auch in Würfel geschnitten und gemischt. Woher wusste ich in jungen Jahren, dass es sich um Zubereitungen für Olivier handelt, einen Vinaigrette-Mantel? An diesem Silvesterabend aßen wir eine riesige Schüssel mit Kartoffelsalat, Karotten, Zwiebeln, Rüben, Erbsen, Sauerkraut und Mayonnaise. Nun, im Allgemeinen alles, was für Salate zubereitet wurde. Hering schien nicht betroffen zu sein. Ich erinnere mich nicht, es war eine lange Zeit :) Es war sehr peinlich. Es war notwendig, Anweisungen, wie in dieser Lieferung zu lassen: zu schneiden, zu stören, nicht zu berühren, wenn die Arme nicht von den Schultern sind. Wenn jedoch die Hände nicht über den Schultern sind, helfen keine Anweisungen ... "

„Das ist keine gute Vorbereitung, aber eine lustige Geschichte unter der lauten Uhr. Ich habe das neue Jahr mit meinen Eltern gefeiert, wir haben beschlossen, die Traditionen zu ändern und roten, nicht weißen Champagner zu kaufen. Und in der Mitte der Rede des Präsidenten greift mein Vater nach der Flasche, um sie zu öffnen, zieht die Folie ab, kann aber den Korken nicht öffnen. Dad versuchte verzweifelt, es zu öffnen, denn schon bald konnte er sich nichts Besseres vorstellen, als es zu schütteln und den Korken mit dem Finger in einer geschickten, aber kraftvollen Bewegung zu schieben. In diesem Moment begann ein Bacchanalia. Wie aus dem Film „Radiance“, in dem mit einem Springbrunnen Blut aus dem Aufzug floss, floss unser Champagner in alle Richtungen und füllte den Neujahrstisch mit blutigen Spritzer, uns am Tisch und alles drumherum. Der Korken, der von der Decke abprallte, schlug der Mutter direkt ins Gesicht. Wir erstarrten, während Putin hinter dem Fernsehbildschirm, der mit blutigen Flecken übersät war, seine Rede beendete und rückwärts berichtete. Papa goss irgendwie Champagner ein, der fast am Boden der Flasche blieb, und unter dem hysterischen Lachen, alles in Farbe und süßem Champagner, feierten wir das neue Jahr. P.S. Bei Mama ist alles in Ordnung, sie ist leicht erschrocken davongekommen. “

4. "Geld Lego Pie für viel Glück"

„Diese Geschichte geschah also buchstäblich ein paar Stunden vor dem neuen Jahr. Ein Tisch wurde von der Küche in den großen Raum gebracht, das Geschirr auf Tellern ausgelegt und stand kurz vor dem Servieren. Der Großteil der Familie hat sich bereits versammelt und freut sich auf ein Fest. In der Küche erledigen Mutter und Schwiegermutter den Abwasch, die Kinder eilen von Zimmer zu Zimmer.Und dann bemerkte unser vierjähriger Sohn, dass die Großmutter eine Münze in den Kuchen legte und bekam natürlich Panik. Aber er beruhigte sich sofort, als ihm gesagt wurde, dass es eine solche Tradition sei: Derjenige, der diese Münze findet, wird das ganze Jahr über vom Glück begleitet sein. Schließlich setzten sich alle an den Tisch, endeten nach und nach mit Olivier, Hering unter einem Pelzmantel, Braten und es war Zeit für den Kuchen. Direkt aus dem Ofen, rosig, duftend, dampfend! Der Ehemann schneidet jedes Stück ab und jeder beginnt, den Kuchen mit einem Messer zu brechen, in der Hoffnung, eine Münze zu finden. Zu meiner Überraschung finde ich nicht einen, sondern vier! Ein ähnlicher Fang für alle Teilnehmer am Fest. Der Schuldige dieser Fülle wurde offensichtlich, als ihr Mann auf einen Lego-Mann stieß. Wie sich herausstellte, wollte der Sohn, dass das Jahr für alle erfolgreich war, und nahm daher eine Kleinigkeit vom Nachttisch, goss sie großzügig in den Kuchen, während sich die Erwachsenen abwandten. Anscheinend, in der Hoffnung, dass das nächste Jahr genauso reich an Legos sein wird, stellte er dort auch eine Figur des Designers auf. Natürlich kam der Kuchen so viel Geld heraus, dass wir ihn nicht essen konnten, aber dieses Jahr war er wirklich glücklich und voller guter Erinnerungen! "

5. "Neujahr im Stil der Teenage Mutant Ninja Turtles"

"Ich kann nicht sagen, dass die Geschichte lustig oder traurig ist, aber sie weckt meine schönsten Erinnerungen. Ich war sechs Jahre alt und hatte genug von den Teenage Mutant Ninja Turtles gesehen und gespielt, aber was ich dort sah, war ich selbst eine Teenage Mutant Ninja Turtle (in meinen Gedanken). Was mögen sie? Das stimmt - Pizza! Und es war dieses Gericht, das ich meine Mutter nach dem Neujahrstisch fragte, und da nicht genug Geld da war, fing meine Mutter an, herauszukommen und Pizza zu kochen. Mit Hering und Schmelzkäse "Friendship". An diesem Tag saß ich unter den Girlanden, trank Pepsi und aß Pizza mit Hering. Ich war glücklich. "

Glückwunsch an die Autoren! Wir sind traurig, dass wir nicht jedem, jedem Sets geben können. Aber senden Sie die Strahlen der Liebe (und den Werbecode Picabu) Lassen Sie das neue Jahr noch wärmer und angenehmer werden. Alle Mandarinen!

Herkunft der Ansicht und Beschreibung

Foto: Ineinander greifen-Pythonschlange

Retikulierte Python wurde erstmals 1801 vom deutschen Naturforscher I. Gottlob beschrieben. Der Artname "reticulatus" wird aus dem Lateinischen als "mesh" übersetzt und verweist auf ein komplexes Farbschema. Der allgemeine Name Python wurde 1803 vom französischen Naturforscher F. Dowden vorgeschlagen.

In einer genetischen DNA-Studie aus dem Jahr 2004 wurde festgestellt, dass die retikulierte Python der Wasserpython und nicht der Tigerpython näher ist, wie zuvor angenommen. Im Jahr 2008 analysierten Leslie Rawlings und seine Kollegen die morphologischen Daten erneut und kombinierten sie mit genetischem Material. Dabei stellten sie fest, dass die Netzgattung ein Ableger der aquatischen Pythonlinie ist.

Video: Netzpython

Basierend auf molekulargenetischen Studien wird Netzpython seit 2014 offiziell unter dem wissenschaftlichen Namen Malayopython reticulans geführt.

Innerhalb dieser Art können drei Unterarten unterschieden werden:

  • Malayopython reticulans reticulans, ein nominotypisches Taxon,
  • Malayopython reticulans saputrai, der in Teilen der indonesischen Inseln Sulawesi und Selayar heimisch ist,
  • malayopython reticulans jampeanus kommt nur auf der Insel Jampea vor.

Die Existenz von Unterarten kann durch die Tatsache erklärt werden, dass retikulierte Pythons über ziemlich große Gebiete verteilt sind und sich auf getrennten Inseln befinden. Diese Schlangenpopulationen sind isoliert und es gibt keine genetische Vermischung mit anderen. Eine mögliche vierte Unterart, die sich auf der Insel Sangihe befindet, wird derzeit untersucht.

Python ist eine kommerziell erfolgreiche Sprache

Es ist schön zu wissen, dass Python nicht nur in akademischen und Amateurkreisen, sondern auch in der Wirtschaft eingesetzt wird. Unternehmen vertrauen ihm Geld an. Viele Unternehmen nutzen Python - Google, Paypal, Instagram, NASA.

Python schafft Arbeitsplätze. Es gibt viele offene Stellen, auch in Russland. Python ist eine industrielle Sprache. Er ist ebenso gefragt wie Plus und Java. Ein Python-Entwickler hat die Chance, sich auf eine echte Produktentwicklung einzulassen. Dies ist kein Ersatz für den lokalen Verbrauch wie 1C.

Python ist eine sehr einfache Sprache

Python ist jedoch extrem einfach zu erlernen. Lerne die Grundlagen in einer Woche. Eine weitere Woche dauert Pakete und Trainingsumgebung. So können Sie in weniger als einem Monat einen Platz im Projekt erreichen.

Python hat einige komplizierte Themen. Also nenne ich die Unterteilungen der Sprache, deren Studium wir getrennt behandeln. In Lisp sind Makros ein heikler Punkt. Es gibt mehr in der Rock - Merkmale, Implikationen, zusammengesetzte Objekte. In Python zwei Dekorateure und Metaklassen. Im Arbeitsalltag werden Metaklassen nicht benötigt, sodass nur eine Schwierigkeit übrig bleibt. Wenn Sie sich mit Dekorateuren befasst haben, werden Sie nicht auf andere Hindernisse in der Sprache stoßen.

Python brachte die Programmierung den Menschen näher

Ich habe noch nie jemanden gesehen, der diesen Artikel erwähnt hat. Python ist zu einer Sprache geworden, mit der jeder Ingenieur, Wissenschaftler oder Techniker ohne Programmierkenntnisse Probleme auf industriellem Niveau lösen kann. Python ist ein Tool zur Problemlösung.

Spezielle Projekte und Bücher sind erschienen, zum Beispiel Python For Engineers, Eine Einführung in das wissenschaftliche Programmieren mit Python und andere. Bei der Arbeit habe ich Python-Skripte gesehen, die von Leuten geschrieben wurden, deren Programmierkenntnisse auf einen Schullehrplan reduziert waren. Aber die Skripte haben funktioniert, die Arbeit automatisiert und damit Zeit und Geld gespart.

Mit Python ist das Autofahren einfacher geworden. Für jede Aufgabe gibt es ein Copy Paste aus dem Stack Overflow. Egal was Sie googeln - brechen Sie die Linie, erstellen Sie ein Diagramm, multiplizieren Sie die Matrix - in den ersten drei Links der Ausgabe gibt es eine Lösung.

Natürlich ist ein solcher Stil nur für Nicht-Programmierer gedacht, wenn es darauf ankommt, ein Ergebnis zu erzielen, und nicht auf zuverlässigen, unterstützten Code.

Python ist eine einfache Möglichkeit, in die industrielle Entwicklung einzusteigen.

Erinnert an die These, wie man durch das Bett ins Showgeschäft kommt. Wenn Sie etwas IT-nahes tun, zum Beispiel Administration, Netzwerke, Support, 1C oder alte Sprachen wie Delphi, dann ist Python ein Glücksticket. Anhand der obigen Punkte haben wir festgestellt, dass dies eine einfache Sprache auf industriellem Niveau ist. Vielleicht wird er der Zugbegleiter des abfahrenden Zuges, auf den Sie springen können, bevor Sie etwas ändern und überwinden wollen.

Im obigen Absatz habe ich tatsächlich meine Geschichte erzählt. Bevor ich Python kennenlernte, arbeitete ich an Websites auf CMS, Delphi und 1C. Natürlich können Sie damit einen Job finden. Es ging jedoch zu Lasten von Python, dass ich meinen alten Job weiterführte, dann für 6.000 km in eine andere Stadt zog und in Dataart landete. Später fand udalenka in Europa.

Python unterstützt alle Programmierparadigmen

Python ist überraschend flexibel. Sein Design und seine Syntax unterstützen die meisten Paradigmen gleichermaßen. Standard OOP, imperativer Ansatz, prozedural-modular, funktional.

Jedes Paradigma ist unvollständig implementiert. In OOP gibt es also keine privaten Variablen und Schnittstellen. Doppelte Unterstreichung ist ein Hack und verwaltet auf einmal. Interfaces werden mit Mixins geschrieben, aber es ist unmöglich, das genaue Folgen des Interfaces zu verfolgen.

Für eine vollwertige FP gibt es nicht genügend vollwertige Lambdas und unveränderliche Sammlungen. In den Top 3 war die Reduktionsfunktion in den Eingeweiden der Standardbibliothek verborgen.

Lazy Computing, Dekorateure und das Überladen von Bedienern eröffnen den Raum für interessante Manöver. Python imitiert verschiedene Sprachen, zum Beispiel:

Fake Lisp ist ein Pseudo-Lisp, ein lustiger Versuch, Python-ähnlichen Code mit S-Ausdrücken zu schreiben.

Hask - Zakos unter der Haskell-Syntax. Für Trinker von Haustieren ist es sehr nützlich zu sehen, zu welchen Tricks der Autor übergegangen ist, um eine so genaue Ähnlichkeit zu erzielen.

fn.py - funktionales Nishtyaki vom Felsen. Ebenso ist es sehr interessant zu sehen, was sich unter der Haube befindet.

Eine vernünftige Frage, warum diese Flexibilität? Meine Antwort ist, Muster und Ansätze zu verfeinern, meinen Horizont zu erweitern und Best Practices aus anderen Sprachen und Plattformen zu übernehmen.

Beispielsweise spart eine auf Python portierte Funktion von Cluti eine Menge Codezeilen und beseitigt lästige Fehler. Oder, nachdem ich ein neues Muster kennengelernt habe, versuche ich, es in Python zu implementieren, um zu bewerten, wie gut es mit einem großen Projekt zurechtkommt.

Beenden Sie mit den Vorteilen. Python ist nicht perfekt. Ich sehe folgende Nachteile:

Kleinere Fehler in der Syntax

Python hat eine lakonische Syntax ohne unnötige Klammern, Semikolons und anderes Lametta, die richtige Maschine und keine Person. Trotzdem gibt es noch Möglichkeiten, das Bein abzuschießen und die Stunde im Debug zu überprüfen, ohne zu verstehen, was passierte.

Bildung eines Tupels. Vielleicht weiß jemand nicht, dass die Klammern um das Tupel symbolisch sind. Tatsächlich wird es durch ein Komma definiert. Es gibt ein Tupelproblem mit einem Element:

Ich habe das Komma vergessen - ich habe kein Tupel erhalten, sondern eine Zahl. Hinterlassen Sie ein Komma am Schwanz - keine Zahl, sondern ein Tupel. Nicht beängstigend, der Code wird aufgrund verschiedener Typen fallen. Schmerz wird beginnen, wenn ein Tupel von Zeilen. Ein String und ein Tupel eignen sich für allgemeine Operationen: Iteration, Zugriff über Index, Slice. Der Code funktioniert ohne Abstürze, führt jedoch zu einem falschen Ergebnis. Wegen eines Kommas.

Das folgende Beispiel. Zwei Zeilen hintereinander ohne Komma verschmelzen zu einer. Das bedeutet ein Tupel

weil es nach 'error' kein Komma gibt. Wenn Sie "Fehler" in den Status markieren, wird False zurückgegeben, was eine direkte Verletzung der Geschäftslogik darstellt.

Python-Code ist sehr zerbrechlich und muss durch Tests stark abgedeckt werden. Im sechsten Jahr der Zusammenarbeit mit ihm bin ich mir immer noch nicht sicher, ob dieser oder jener Code ohne einen Test korrekt funktioniert.

OOP Führung

Obwohl Python viele Paradigmen unterstützt, bleibt OOP das wichtigste. Ein typisches Framework oder eine Bibliothek ist eine Sammlung von Klassen, die den Status speichern und sich gegenseitig ändern.

Hast du Django jemals entwertet? Ich ja. Es war eine benutzerdefinierte Backend-Autorisierung. Das Debugging dauerte mehr als eine Stunde und ähnelte einer BSDM-Sitzung.

Anfrage-, Antwort-, Benutzer-, Sitzungsobjekte vereinbaren eine totale Sünde. Setze Freund-Links mehrmals. Sie klettern aus irgendeinem Grund in den Cache.

Sehr seltsame Anforderungen an das Autorisierungs-Backend. Die Methode .get_user () gibt das Benutzerobjekt zurück. Dann ist dieser Benutzer irgendwo verloren, es gibt keine Verbindung zu ihm. Das System fordert die Methode .get_user_by_id () an. Ich habe den User schon aufgegeben, einen Club! Sie müssen also entweder erneut in die Datenbank oder das Netzwerk einsteigen oder ein Wörterbuch in der Klasse speichern, die kein Thread-Safe ist.

Aus irgendeinem Grund musste ich in Klage mit seinen unveränderlichen Sammlungen nie in eine Sitzung einsteigen, nachträglich etwas anfordern oder beantworten und dort etwas bearbeiten. Änderungen in der Sammlung werden nur vorgezogen.

Ich fordere keine Programmierung in einem soliden FP-Stil. Ehrlich gesagt sehen alle diese Artikel im Sinne von "Programmieren in Python in einem funktionalen Stil" erbärmlich aus. Reduktionen und dreistöckige Lambdas werden komplett an den Ohren gezogen. Solcher Code existiert nicht gleichzeitig im Rahmen des Projekts und wird ausgeschnitten, auch wenn er irgendwie gezogen werden kann.

Dies beeinträchtigt die Funktionsprogrammierung. Es gibt ein weit verbreitetes Missverständnis, dass AFs Karten und Lambdas sind.

In Python wäre es schön, etwas hinzuzufügen, das die Aufgabe des Staates fördert. Zum Beispiel ein unveränderliches Wörterbuch, mehr Funktionen für die Arbeit mit Sammlungen.

Dies wäre jedoch eine völlig andere Sprache gewesen.

Niedrige Geschwindigkeit

Vor einem Jahr sagte er, dass dies überhaupt kein Nachteil sei. Speicher ist billig, Hosting ist billig und andere Ausreden. Heute betrachte ich eine solche Antwort als das Los eines Amateurs.

Die Ausführungsgeschwindigkeit ist wichtig. Stellen Sie sich vor, Ihre gesamte Software auf dem Computer ist in Python geschrieben. Er hätte 20-30 mal langsamer gearbeitet, musste auf Spiele und Photoshop verzichten. Dies ist nicht nur ein Rückschritt, sondern ein Rollback für mehrere Generationen.

Vor kurzem musste ich das Nginx-Protokoll analysieren. Google hat das Dienstprogramm ngxtop veröffentlicht. Ich habe mir nicht angesehen, worauf es geschrieben stand, ich habe es aus den Paketen genommen. Sie hat das Gigabyte-Protokoll eine Stunde lang verarbeitet. Es stellte sich heraus, dass es Python war. Das Dienstprogramm auf C wurde in 5 Minuten analysiert. Die falsche Wahl war Zeitverschwendung.

Die Entwicklung von Python hat lange gedauert. Ja, es ist langsamer, aber es wird früher als sein Konkurrent in Java eingeführt. Und jetzt gibt es Sprachen, die Codegeschwindigkeit und Entwicklungsgeschwindigkeit kombinieren. Wenn Sie ungefähr zur gleichen Zeit in X und Y schreiben und Y fünfmal schneller ausgeführt wird, warum sollten Sie dann X nehmen?

Über das zusätzliche Bügeleisen. Zu behaupten, dass das Setzen des zweiten Knotens eine Kleinigkeit ist, kann nur von jemandem getan werden, der den Code schreibt und die Bereitstellung nicht berührt. Mehrere Knoten sind ein verteiltes System. Wir brauchen einen Balancer, Protokolltrennung, Synchronisierungsprobleme und konsistente Updates.

In meinem persönlichen Projekt hat Python lange gelebt, die Last wuchs stetig. Der Server verschluckte sich, ich hatte keine Zeit, den Tarifplan zu erhöhen. Dann spuckte er und schrieb es auf Claude. Ich werde dieses Gefühl nicht vergessen, als der CPU-Graph von 80 auf 20 Prozent abfiel.

Sie werfen GIL den Geist vor, "du brauchst es nicht", "benutze Prozesse". Also sagte ich, bis ich wusste, wie Multithreading in funktionalen Sprachen funktioniert.

Wir führen eine solche Webanwendung in Python unter uWSGI aus. Der Masterprozess startet. Er verwaltet die Mitarbeiter, deren Prozesse jeweils eine Webanwendung sind. Es werden jeweils 16 Jungs gestartet, von denen jeder antwortet, wenn der andere beschäftigt ist.

Der Masterprozess stellt sicher, dass alle gleich sind. Tötet diejenigen, die nicht antworten, zu speicherhungrig oder überlastet sind - es wurde ein Abfragelimit festgelegt.

Ich finde diese Methode hässlich. Erstens herrscht Misstrauen gegenüber der Technologie und ihrem instabilen Verhalten. Bei längerem Betrieb fließen Prozesse, sogar ein Master-Prozess. Dies bedeutet, dass das System neu gestartet werden muss.

Durch die Parallelisierung von Prozessen wird der Zugriff auf den gemeinsam genutzten Speicher gesperrt und die Verwendung von Ersatzspeichern wie Memcache oder Redis erzwungen, während der gemeinsam genutzte Speicher der effizienteste Cache ist.

Master-Prozesse wie uWSGI und Green Unicorn sind zusätzliche Elemente in der Kette, die die Anforderung durchläuft. Überflüssige E / A, ein Punkt des Protokollierens und Fallens.

Schließlich kann mit Ausnahme von Netzwerkanforderungen nichts mit GIL parallelisiert werden. Funktionale Sprachen haben diese Mängel nicht. Die Unveränderlichkeit der Sammlungen im Closet, das Kanalsystem in Gow, ermöglicht es Ihnen, Multithreading zu steuern, ohne Angst davor zu haben, sich vom Bein zu stürzen. Dies spuckt eine ganze Ebene der Infrastruktur aus: Krücken in Form von Warteschlangen, Arbeitern und Kronenskripten. Und zusätzliche Systeme, die all dies unterstützen.

Diffusionsschwierigkeiten

Eine in Python geschriebene Anwendung ist schwierig zu verteilen. Ein kleines Skript benötigt einen Interpreter einer bestimmten Version, eine virtuelle Umgebung mit einer Reihe von Bibliotheken. Es gibt keine genaue Antwort auf die Frage, wie die Umgebung auf den Computer des Benutzers übertragen werden soll.

Vor einigen Jahren habe ich verschiedene Packer ausprobiert: Py2Exe, PyInstaller, CxFreeze. Nur der letzte konnte die Anwendung für Windu fehlerfrei kompilieren. Ich habe es sehr gut gemacht: Ich habe ein * .msi-Installationsprogramm herausgegeben und einen Systemdienst registriert. Aber es hat viel Zeit gekostet, die Docks zu bauen und zu lesen. Warum kümmern sich Python-Entwickler nicht darum, ein Distributionssystem für das Endprodukt in die Verpackung aufzunehmen?

Führen Sie zum Schreiben eines Skripts die Assembly aus und rufen Sie das Archiv mit der ausführbaren Datei ab. Warum können funktionale Sprachen das, aber Python nicht?

Colet gibt Uberjar. Ich sammle es auf dem Mac, lade es auf das Hosting hoch, wo es nichts anderes als Java gibt - es funktioniert ohne Probleme. Haskell kompiliert nach Binar. Raketen, Rast - auch. Der 30-jährige Common Lisp, Carl, legt eine Lisp-Maschine in einer Binärdatei ab!

Um eine Webanwendung in Python auszuführen, benötigen Sie ungefähr 10.000 * .py-Dateien. Ist dies nicht der Fall, startet das System nicht. Es ist möglich, diese Sorte durch Docker zu isolieren, aber hier verdrehen wir die Seele.

Beim Durchblättern der Dokumentation für das dritte Python habe ich ein interessantes zipapp-Modul gefunden. In der ersten Minute dachte ich, dass ich meine Zunge vergeblich vorwürfe, dass die Angelegenheit vom Boden verschwunden war. Es stellte sich heraus, dass das Modul keine virtuellen Umgebungen und Bibliotheksbibliotheken unterstützt. Ich konnte mit dem Postgres-Treiber keine einfache Anwendung erstellen.

Was ist Python?

Ich werde nicht auf die Entstehungs- und Entwicklungsgeschichte der Sprache eingehen, das können Sie dem unten angehängten Video entnehmen. Es ist wichtig zu wissen, dass Python eine Skriptsprache ist. Dies bedeutet, dass Ihr Code auf Fehler überprüft und sofort ohne zusätzliche Kompilierung oder Verarbeitung ausgeführt wird. Dieser Ansatz wird auch als interpretiert bezeichnet.

Dies verringert die Leistung, ist jedoch sehr praktisch. Es gibt einen Interpreter, in den Sie Befehle eingeben und deren Ergebnis sofort sehen können. Eine solche interaktive Arbeit hilft sehr beim Lernen.

Arbeite im Dolmetscher

Das Ausführen des Python-Interpreters ist auf jedem Betriebssystem sehr einfach. Geben Sie zum Beispiel unter Linux einfach den Befehl python in das Terminal ein:

In der Shell-Eingabeaufforderung, die sich öffnet, sehen wir die Version von Python, die derzeit verwendet wird. Heutzutage sind zwei Versionen von Python 2 und Python 3 sehr verbreitet: Beide sind beliebt, weil die erste viele Programme und Bibliotheken entwickelt hat und die zweite mehr Funktionen bietet. Daher enthalten Distributionen beide Versionen. Standardmäßig wird die zweite Version gestartet. Wenn Sie jedoch Version 3 benötigen, müssen Sie Folgendes tun:

Es ist die dritte Version, die in diesem Artikel berücksichtigt wird. Betrachten Sie nun die Hauptmerkmale dieser Sprache.

3. Mit Transformation verbinden

Sie können eine Zeichenfolge mit einer Zahl oder einem Booleschen Wert kombinieren. Aber dafür müssen Sie die Transformation verwenden. Hierfür gibt es eine str () -Funktion:

str = "Dies ist eine Testnummer" + str (15)
print (str)

4. Teilstringsuche

Sie können ein Zeichen oder eine Teilzeichenfolge mit der Suchmethode suchen:

str = "Willkommen bei losst.ru"
print (str.find ("losst.ru"))

Diese Methode zeigt die Position des ersten Vorkommens der Unterzeichenfolge losst.ru an. Wenn sie gefunden wird und nichts gefunden wird, wird der Wert -1 zurückgegeben. Die Funktion startet die Suche mit dem ersten Zeichen, Sie können jedoch mit dem n-ten beginnen, z. B. 26:

str = "Willkommen bei losst.ru"
print (str.find ("losst", 26))

In dieser Option gibt die Funktion -1 zurück, da die Zeichenfolge nicht gefunden wurde.

5. Einen Teilstring erhalten

Wir haben die Position der Teilzeichenfolge, die wir suchen, und nun, wie Sie die Teilzeichenfolge selbst erhalten und was ist danach? Verwenden Sie dazu diese Syntax. Anfang: EndeGeben Sie einfach zwei Zahlen oder nur die erste an:

str = "Eins zwei drei"
print (str: 2)
print (str2 :)
drucken (str3: 5)
print (str-1)

Die erste Zeile gibt eine Teilzeichenfolge vom ersten bis zum zweiten Zeichen aus, die zweite - von der zweiten bis zum Ende. Bitte beachten Sie, dass der Countdown bei Null beginnt. Verwenden Sie eine negative Zahl, um rückwärts zu zählen.

6. Austausch des Substrings

Sie können einen Teil einer Zeichenfolge mit der Methode replace ersetzen:

str = "Diese Seite handelt von Linux"
str2 = str.replace ("Linux", "Windows")
print (str2)

Wenn es viele Vorkommen gibt, kann nur das erste ersetzt werden:

str = "Dies ist eine Linux-Site und ich habe diese Site abonniert."
str2 = str.replace ("site", "page", 1)
print (str2)

7. Saiten löschen

Sie können zusätzliche Leerzeichen mit der Streifenfunktion entfernen:

str = "Dies ist eine Linux-Website"
print (str.strip ())

Sie können auch zusätzliche Leerzeichen nur auf dem rechten Streifen oder nur auf dem linken Streifen entfernen.

9. Konvertieren Sie Zeichenfolgen

Es gibt verschiedene Funktionen zum Konvertieren von Strings in verschiedene numerische Typen, darunter int (), float (), long () und andere. Die Funktion int () konvertiert in eine Ganzzahl und float () in eine Gleitkommazahl:

str = "10"
str2 = "20"
print (str + str2)
print (int (str) + int (str2))

10. Leitungslänge

Sie können die Funktionen min (), max (), len () verwenden, um die Anzahl der Zeichen in einer Zeichenfolge zu berechnen:

str = "Willkommen in Losst"
print (min (str))
print (max (str))
print (len (str))

Das erste zeigt die minimale Zeichengröße, das zweite zeigt das Maximum und das dritte zeigt die Gesamtlänge der Zeichenkette.

11. Durchlaufen einer Zeichenfolge

Sie können mit einer for-Schleife auf jedes Zeichen einer Zeichenfolge separat zugreifen:

str = "Willkommen auf der Seite"
für i in range (len (str)):
print (stri)

Um die Schleife einzuschränken, haben wir die len () -Funktion verwendet. Achten Sie auf den Einzug. Die Programmierung in Python basiert darauf, es gibt keine Klammern zum Organisieren von Blöcken, nur Einrückungen.

2. Zufallszahlengenerierung

Sie können Zufallszahlen mit dem Zufallsmodul erhalten:

zufällig importieren
print (random.random ())

Standardmäßig wird eine Zahl aus einem Bereich von 0,0 bis 1,0 generiert. Sie können jedoch Ihren Bereich festlegen:

zufällig importieren
Zahlen = 1,2,3,4,5,6,7
print (random.choice (numbers))

Datums- und Zeitvorgänge

Die Programmiersprache Python verfügt über ein DateTime-Modul, mit dem Sie verschiedene Vorgänge mit Datum und Uhrzeit ausführen können:

import datetime
cur_date = datetime.datetime.now ()
print (cur_date)
print (cur_date.year)
print (cur_date.day)
print (cur_date.weekday ())
print (cur_date.month)
print (cur_date.time ())

Das Beispiel zeigt, wie der gewünschte Wert aus dem Objekt extrahiert wird. Sie können den Unterschied zwischen zwei Objekten ermitteln:

import datetime
time1 = datetime.datetime.now ()
time2 = datetime.datetime.now ()
timediff = time2 - time1
print (timediff.microseconds)

Sie können selbst Datumsobjekte mit einem beliebigen Wert erstellen:

time1 = datetime.datetime.now ()
time2 = datetime.timedelta (days = 3)
Zeit3 = Zeit1 + Zeit2
print (time3.date ())

1. Datums- und Uhrzeitformatierung

Mit der strftime-Methode können Sie das Datums- und Uhrzeitformat je nach ausgewähltem Standard oder angegebenem Format ändern. Hier sind die grundlegenden Formatierungszeichen:

  • % a - Wochentag, abgekürzter Name,
  • % A - Wochentag, vollständiger Name,
  • % w - Wochentagsnummer von 0 bis 6,
  • % d - Tag des Monats
  • % b - der abgekürzte Name des Monats,
  • % B - vollständiger Monatsname,
  • % m - Monatszahl
  • % Y - Jahreszahl
  • % H - Stunde des Tages im 24-Stunden-Format,
  • % l - Stunde des Tages im 12-Stunden-Format,
  • % p - vormittags oder nachmittags,
  • % M - eine Minute
  • % S - Zweitens.

import datetime
date1 = datetime.datetime.now ()
print (date1.strftime ('% d.% B% Y% I:% M% p '))

2. Erstellen Sie ein Datum aus einer Zeichenfolge

Sie können die Funktion strptime () verwenden, um ein Datumsobjekt aus einer Zeichenfolge zu erstellen:

import datetime
date1 = datetime.datetime.strptime ("2016-11-21", "% Y-% m-% d")
date2 = datetime.datetime (Jahr = 2015, Monat = 11, Tag = 21)
print (date1),
print (date2),

1. Kopieren Sie die Dateien

Um Dateien zu kopieren, müssen Sie die Funktionen des Subutil-Moduls verwenden:

importiere es
new_path = shutil.copy ('file1.txt', 'file2.txt')

Wenn file1 eine symbolische Verknüpfung ist, erstellt der Kopiervorgang dennoch eine separate Datei. Wenn Sie einen symbolischen Link kopieren möchten, verwenden Sie diese Konstruktion:

new_path = shutil.copy ('file1.txt', 'file2.txt', follow_symlinks = False)

3. Lesen und Schreiben von Textdateien

Mit den integrierten Funktionen können Sie Dateien öffnen, lesen oder Daten darauf schreiben:

fd = open ('file1.txt')
content = fd.read ()
Drucken (Inhalt)

Zuerst müssen Sie die Datei öffnen, um mit der Öffnungsfunktion arbeiten zu können. Die Lesefunktion dient zum Lesen von Daten aus einer Datei, der gelesene Text wird in einer Variablen gespeichert. Sie können die Anzahl der zu lesenden Bytes angeben:

fd = open ('file1.txt')
content = fd.read (20)
Drucken (Inhalt)

Wenn die Datei zu groß ist, können Sie sie in Zeilen aufteilen und die Verarbeitung bereits ausführen:

content = fd.readlines ()
Drucken (Inhalt)

Um Daten in eine Datei zu schreiben, müssen Sie diese zuerst zum Schreiben öffnen. Es gibt zwei Betriebsarten: Überschreiben und Hinzufügen am Ende der Datei. Aufnahmemodus:

fd = open ('file1.txt', 'w')
content = fd.write ('Neuer Inhalt')

Und füge am Ende der Datei hinzu:

fd = open ('file1.txt', 'a')
content = fd.write ('Neuer Inhalt')

5. Erstellungszeit abrufen

Mit den Funktionen getmtime (), getatime () und getctime () können Sie den Zeitpunkt der letzten Änderung, des letzten Zugriffs und der letzten Erstellung ermitteln. Das Ergebnis wird im Unix-Format angezeigt und muss in eine lesbare Form konvertiert werden:

import os
import datetime
tim = os.path.getctime ('./ file1.txt')
print (datetime.datetime.fromtimestamp (tim))

6. Dateiliste

Mit der Funktion listdir () können Sie eine Liste der Dateien in einem Ordner abrufen:

import os
files = os.listdir ('.')
Drucken (Dateien)

Um dasselbe Problem zu lösen, können Sie das Glob-Modul verwenden:

Import Glob
files = glob.glob ('*')
Drucken (Dateien)

7. Serialisieren von Python-Objekten

Durch die Serialisierung können Sie das Objekt für die spätere Wiederherstellung in einer Zeichenfolge speichern. Verwenden Sie dazu das Pickle-Modul:

Import Gurke
fd = open ('myfile.pk', 'wb')
pickle.dump (mydata, fd)

Verwenden Sie dann zum Wiederherstellen des Objekts Folgendes:

Import Gurke
fd = open ('myfile.pk', 'rb')
mydata = pickle.load (fd)

8. Dateikomprimierung

Mit der Python-Standardbibliothek können Sie mit verschiedenen Archivformaten arbeiten, z. B. zip, tar, gzip, bzip2. So zeigen Sie den Inhalt einer Datei an:

zip-datei importieren
my_zip = zipfile.ZipFile ('my_file.zip', mode = 'r')
print (file.namelist ())

Und um ein Zip-Archiv zu erstellen:

zip-datei importieren
file = zipfile.ZipFile ('files.zip', 'w')
file.write ('file1.txt')
file.close ()

Sie können das Archiv auch entpacken:

zip-datei importieren
file = zipfile.ZipFile ('files.zip', 'r')
file.extractall ()
file.close ()

Sie können Dateien wie folgt zum Archiv hinzufügen:

zip-datei importieren
file = zipfile.ZipFile ('files.zip', 'a')
file.write ('file2.txt')
file.close ()

9. Analyse von CSV- und Exel-Dateien

Mit dem Pandas-Modul können Sie den Inhalt von CSV- und Exel-Tabellen anzeigen und analysieren. Zuerst müssen Sie das Modul mit pip installieren:

Sudo Pip installieren Pandas

Geben Sie zum Parsen Folgendes ein:

Pandas importieren
data = pandas.read_csv ('file.csv)

Standardmäßig verwendet pandas die erste Spalte für die Überschriften jeder Zeile. Sie können eine Spalte für den Index mit dem Parameter index_col angeben oder False angeben, wenn dies nicht erforderlich ist. Verwenden Sie die Funktion to_csv, um Änderungen in eine Datei zu schreiben:

Auf die gleiche Weise können Sie die Exel-Datei analysieren:

data = pd.read_excel ('file.xls', sheetname = 'Sheet1')

Wenn Sie alle Tabellen öffnen müssen, verwenden Sie:

Dann können Sie alle Daten zurückschreiben:

Vernetzung in Python

Bei der Python 3-Programmierung wird häufig ein Netzwerk verwendet. Die Python-Standardbibliothek enthält Sockets für den Netzwerkzugriff auf niedriger Ebene. Dies ist erforderlich, um viele Netzwerkprotokolle zu unterstützen.

Import-Socket
host = '192.168.1.5'
port = 4040
my_sock = socket.create_connection ((Host, Port))

Dieser Code wird mit Port 4040 auf Computer 192.168.1.5 verbunden. Wenn der Socket geöffnet ist, können Sie Daten senden und empfangen:

Wir müssen das Zeichen b vor die Zeile schreiben, weil wir Daten im Binärmodus übertragen müssen. Wenn die Nachricht zu groß ist, können Sie Folgendes wiederholen:

msg = b'Längere Nachricht geht hier '
mesglen = len (msg)
total = 0
während insgesamt

Um die Daten zu erhalten, müssen Sie auch den Socket öffnen. Es wird nur die Methode my_sock_recv verwendet:

Hier geben wir an, wie viele Daten Sie abrufen müssen - 20.000. Die Daten werden erst in die Variable übertragen, wenn 20.000 Datenbytes empfangen wurden. Wenn die Nachricht größer ist, müssen Sie eine Schleife erstellen, um sie zu empfangen:

buffer = bytearray (b '' * 2000)
my_sock.recv_into (buffer)

Wenn der Puffer leer ist, wird die empfangene Nachricht dort geschrieben.

1. Empfangen von E-Mails von einem POP3-Server

Zum Empfangen von Nachrichten verwenden wir den POP-Server:

Import Getpass, Poplib
pop_serv = poplib.POP3 ('192.168.1.5')
pop_serv.user ("myuser")
pop_serv.pass_ (getpass.getpass ())

Mit dem getpass-Modul können Sie das Kennwort des Benutzers auf sichere Weise abrufen, sodass es nicht auf dem Bildschirm angezeigt wird. Wenn der POP-Server eine sichere Verbindung verwendet, müssen Sie die Klasse POP3_SSL verwenden. Wenn die Verbindung erfolgreich ist, können Sie mit dem Server interagieren:

msg_list = pop_serv.list () # um die Nachrichten aufzulisten
msg_count = pop_serv.msg_count ()

Um die Arbeit abzuschließen, verwenden Sie:

2. Empfangen von E-Mails von einem IMAP-Server

Für die Verbindung und die Arbeit mit dem IMAP-Server wird das imaplib-Modul verwendet:

imaplib importieren, getpass
my_imap = imaplib.IMAP4 ('imap.server.com')
my_imap.login ("myuser", getpass.getpass ())

Wenn Ihr IMAP-Server eine sichere Verbindung verwendet, müssen Sie die IMAP4_SSL-Klasse verwenden. Verwenden Sie für eine Liste der Nachrichten:

data = my_imap.search (Keine, 'ALL')

Dann können Sie durch die ausgewählte Liste blättern und jede Nachricht lesen:

msg = my_imap.fetch (email_id, '(RFC822)')

Vergessen Sie jedoch nicht, die Verbindung zu schließen:

3. Mail senden

Zum Senden von E-Mails werden das SMTP-Protokoll und das SMTPLIB-Modul verwendet:

smtplib importieren, getpass
my_smtp = smtplib.SMTP (smtp.server.com ')
my_smtp.login ("myuser", getpass.getpass ())

Verwenden Sie nach wie vor SMTP_SSL für eine sichere Verbindung. Wenn die Verbindung hergestellt ist, können Sie eine Nachricht senden:

from_addr = '[email protected]'
to_addr = '[email protected]'
msg = 'Von: [email protected] r nAn: [email protected] r n r nHallo, das ist eine Testnachricht.'
my_smtp.sendmail (from_addr, to_addr, msg)

1. Web-Crawling

Mit dem urllib-Modul können Sie Webseiten auf verschiedene Arten abfragen. Zum Senden einer regulären Anfrage wird die Anfrageklasse verwendet. Zum Beispiel führen wir eine reguläre Seitenanfrage aus:

import urllib.request
my_web = urllib.request.urlopen ("https://www.google.com")
print (my_web.read ())

2. Verwenden Sie die POST-Methode

Wenn Sie ein Webformular senden müssen, müssen Sie keine GET-Anforderung, sondern einen POST verwenden:

import urllib.request
mydata = b'Ihre Daten werden hier abgelegt '
my_req = urllib.request.Request ('http: // localhost', data = mydata, method = 'POST')
my_form = urllib.request.urlopen (my_req)
Drucken (my_form.status)

3. Erstellen eines Webservers

Mit der Socket-Klasse können Sie eingehende Verbindungen akzeptieren, was bedeutet, dass Sie einen Webserver mit minimalen Funktionen erstellen können:

Import-Socket
host = ''
port = 4242
my_server = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
my_server.bind ((Host, Port))
my_server.listen (1)

Wenn der Server erstellt wird. Sie können Verbindungen annehmen:

addr = mein_server.accept ()
print ('Verbunden vom Host', addr)
data = conn.recv (1024)

Und vergessen Sie nicht, die Verbindung zu schließen:

Multithreading

Wie in den meisten modernen Sprachen können Sie in Python mehrere parallele Threads ausführen. Dies kann hilfreich sein, wenn Sie komplexe Berechnungen durchführen müssen. Die Standardbibliothek verfügt über ein Threading-Modul, das die Therad-Klasse enthält:

Threading importieren
def print_message ():
print ('Die Nachricht wurde von einem anderen Thread gedruckt')
my_thread = threading.Thread (target = print_message)
my_thread.start ()

Wenn die Funktion zu lange arbeitet, können Sie mit der Funktion is_alive () prüfen, ob alles in Ordnung ist. Manchmal müssen Ihre Threads auf globale Ressourcen zugreifen. Hierzu werden Sperren verwendet:

Threading importieren
num = 1
my_lock = threading.Lock ()
def my_func ():
globale num, my_lock
my_lock.acquire ()
sum = num + 1
print (Summe)
my_lock.release ()
my_thread = threading.Thread (target = my_func)
my_thread.start ()

Schlussfolgerungen

In diesem Artikel wurden die Grundlagen der Python-Programmierung behandelt. Jetzt kennen Sie die meisten häufig verwendeten Funktionen und können sie in Ihren kleinen Programmen verwenden. Sie werden es lieben, in Python 3 zu programmieren, es ist sehr einfach! Bei Fragen bitte in den Kommentaren nachfragen!

Am Ende des Artikels ein großartiger Vortrag über Python:

Aussehen und Eigenschaften

Foto: Große Ineinander greifen-Pythonschlange

Reticulated Python ist eine Riesenschlange, die in Asien lebt. Die durchschnittliche Körperlänge und das durchschnittliche Körpergewicht betragen 4,78 m bzw. 170 kg. Einige Personen erreichen eine Länge von 9,0 m und ein Gewicht von 270 kg. Retikulierte Pythons mit einer Länge von mehr als 6 m sind zwar selten, laut Guinness-Buch der Rekorde ist dies jedoch die einzige Schlange, die diese Länge regelmäßig überschreitet.

Retikulierte Python hat eine Körperfarbe von hellgelb bis braun mit schwarzen Linien, die sich vom ventralen Bereich der Augen diagonal nach unten zum Kopf erstrecken. Manchmal ist am Kopf der Schlange eine weitere schwarze Linie vorhanden, die sich vom Ende der Schnauze bis zur Basis des Schädels oder Nackens erstreckt. Das Farbmuster des Mesh-Pythons ist ein komplexes geometrisches Muster, das verschiedene Farben enthält. Der Rücken hat normalerweise eine Reihe unregelmäßiger rautenförmiger Formen, die von kleineren Flecken mit hellen Mitten umgeben sind.

Interessante Tatsache: Im weiten geografischen Gebiet dieser Art finden sich häufig große Unterschiede in Größe, Farbe und Markierung.

Im Zoo mag das Farbmuster hart erscheinen, aber in der schattigen Umgebung des Dschungels, zwischen den gefallenen Blättern und Trümmern, lässt es die Python fast verschwinden.In der Regel zeigte diese Art, dass die Weibchen in Größe und Gewicht viel größer sind als die Männchen. Das durchschnittliche Weibchen kann bis zu 6,09 m und 90 kg wie das Männchen mit einer durchschnittlichen Länge von 4,5 m und bis zu 45 kg wachsen.

Jetzt wissen Sie, ob eine retikulierte Python giftig ist oder nicht. Finden wir heraus, wo die Riesenschlange lebt.

Wo lebt retikulierte Python?

Foto: Schlange retikulierte Python

Python bevorzugt ein tropisches und subtropisches Klima und ist gerne am Wasser. Er lebte ursprünglich in Regenwäldern und Sümpfen. Da die Rodung dieser Gebiete immer kleiner wird, beginnt sich die Netzpython an Sekundärwälder und landwirtschaftliche Felder anzupassen und lebt sehr dicht mit den Menschen zusammen. Zunehmend kommen große Schlangen in kleinen Städten vor, in denen sie umgesiedelt werden müssen.

Außerdem kann Netzpython in der Nähe von Flüssen und in Gebieten mit nahegelegenen Bächen und Seen vorkommen. Er ist ein ausgezeichneter Schwimmer, der weit ins Meer schwimmen kann, so dass die Schlange viele kleine Inseln in seiner Reichweite kolonisierte. Es wird gesagt, dass in den frühen Jahren des 20. Jahrhunderts Netzpython ein regelmäßiger Besucher war, sogar im geschäftigen Bangkok.

Das Angebot an retikulierten Pythons erstreckt sich in Südasien:

Darüber hinaus ist die Art auf den Nikobaren verbreitet sowie auf Sumatra, einer Gruppe von Mentawai-Inseln, 272 Natuna-Inseln, Borneo, Sulawesi, Java, Lombok, Sumbawa, Timor, Maluku, Sumba, Flores, Bohol, Cebu, Leite, Mindanao, Mindoro. Luzon, Palawan, Panay, Polillo, Samar, Tavi-Tavi.

Retikulierte Python dominiert in feuchten Tropenwäldern, Sümpfen und Wiesenwäldern in Höhen von 1200 bis 2500 m. Die für die Fortpflanzung und das Überleben erforderliche Temperatur sollte bei hoher Feuchtigkeit zwischen 24 ° C und 34 ° C liegen.

Was isst Netzpython?

Foto: Gelbe Netzpythonschlange

Wie alle Pythons jagt der Gefangene aus dem Hinterhalt und wartet, bis das Opfer die Reichweite des Streiks erreicht, bevor er die Beute mit seinem Körper packt und mit Kompression tötet. Es ist bekannt, dass es sich von Säugetieren und verschiedenen Vogelarten ernährt, die in seinem geografischen Gebiet leben.

Seine natürliche Ernährung beinhaltet:

Häufig wird nach Haustieren gejagt: Schweinen, Ziegen, Hunden und Geflügel. Ferkel und Kinder mit einem Gewicht von 10-15 kg sind in der üblichen Ernährung enthalten. Es gibt jedoch einen bekannten Fall, in dem die von mir verschluckte Maschenpythonrute ein Gewicht von mehr als 60 kg aufweist. Es jagt Fledermäuse, fängt sie im Flug und repariert ihren Schwanz an Unregelmäßigkeiten in der Höhle. Kleine Individuen bis zu einer Länge von 3-4 m ernähren sich hauptsächlich von Nagetieren wie Ratten und größere Individuen wechseln zu größerer Beute.

Interessante Tatsache: Retikulierte Pythons können Beute bis zu einem Viertel ihrer Länge und ihres Gewichts schlucken. Zu den größten nachgewiesenen Beutegütern gehört ein halb verhungerter malaiischer Bär mit einem Gewicht von 23 kg, der von einer 6,95 m großen Schlange gefressen wurde und für dessen Verdauung etwa zehn Wochen benötigt wurden.

Es wird angenommen, dass retikulierte Pythons aufgrund zahlreicher Angriffe auf Menschen in freier Wildbahn und Heimbesitzer von retikulierten Pythons Menschen zum Opfer fallen können. Mindestens ein Fall ist bekannt, als Python reticulatus die Wohnung eines Mannes in einem Wald betrat und ein Kind wegtrug. Um eine Beute aufzuspüren, verwendet die retikulierte Python empfindliche Gruben (in einigen Schlangenarten spezialisierte Organe), die die Hitze von Säugetieren erfassen. Auf diese Weise können Sie den Produktionsstandort in Abhängigkeit von seiner Temperatur zur Umgebung bestimmen. Aufgrund dieser Funktion erkennt das retikulierte Python Beute und Raubtiere, ohne sie zu sehen.

Merkmale von Charakter und Lebensstil

Foto: Ineinander greifen-Pythonschlange

Trotz der Nähe zum Menschen ist wenig über das Verhalten dieser Tiere bekannt. Netzpython führt einen nächtlichen Lebensstil und verbringt den größten Teil des Tages im Schutz. Die Entfernungen, die Tiere während ihres Lebens zurücklegen, oder ob sie feste Gebiete haben, wurden nicht gründlich untersucht. Reticulated Python ist ein Einzelgänger, der nur während der Paarungszeit in Kontakt kommt.

Diese Schlangen besetzen Gebiete mit Wasserquellen. Während des Bewegungsprozesses sind sie in der Lage, Muskeln zusammenzuziehen und sie gleichzeitig freizugeben, wodurch ein Schlangenbewegungsmuster entsteht. Aufgrund der geradlinigen Bewegung und der großen Körpergröße von retikulierten Pythons wird die Art der Schlangenbewegung, bei der sie ihren Körper komprimiert und sich dann in einer linearen Bewegung entfaltet, häufiger beobachtet, da größere Individuen sich schneller bewegen können. Mit der Komprimierungs- und Glättungstechnik kann Python Bäume besteigen.

Interessante Tatsache: Wie alle Schlangen werfen auch retikulierte Pythons bei ähnlichen Körperbewegungen ihre Haut ab, um Wunden zu reparieren, oder einfach nur in den Lebensphasen der Entwicklung. Hautverlust oder Peeling ist notwendig, um einen ständig wachsenden Körper zu entlasten.

Der Mesh-Python hört praktisch keine Geräusche und ist aufgrund der bewegungslosen Augenlider optisch eingeschränkt. Deshalb verlässt er sich auf seinen Geruchs- und Tastsinn, um Beute zu finden und Raubtieren auszuweichen. Die Schlange hat keine Ohren, sondern ein spezielles Organ, mit dem Sie die Vibrationen im Boden spüren können. Wegen des Mangels an Ohren müssen Schlangen und andere Pythons physische Bewegungen verwenden, um Vibrationen zu erzeugen, durch die sie miteinander kommunizieren.

Sozialstruktur und Reproduktion

Foto: Große Ineinander greifen-Pythonschlange

Die Brutzeit der retikulierten Python dauert von Februar bis April. Kurz nach dem Winter bereiten sich die Pythons aufgrund der vielversprechenden Wärme des Sommers auf die Brut vor. In den meisten Gebieten ist der Saisonstart von der geografischen Lage abhängig. So brüten Pythons je nach klimatischen Veränderungen in einer bestimmten Lebensraumregion.

Die Brutzone muss reich an Beute sein, damit das Weibchen Nachkommen zeugen kann. Retikulierte Pythons brauchen unbewohnte Gebiete, um eine hohe Fortpflanzung zu gewährleisten. Die Lebensfähigkeit der Eier hängt von der Fähigkeit der Mutter ab, sie zu schützen und zu bebrüten, sowie von einer hohen Luftfeuchtigkeit. Erwachsene Pythons sind normalerweise zur Zucht bereit, wenn das Männchen eine Länge von ungefähr 2,5 Metern und das Weibchen eine Länge von ungefähr 3,0 Metern erreicht. Sie erreichen eine solche Länge innerhalb von 3-5 Jahren für beide Geschlechter.

Wissenswertes: Wenn viel Futter vorhanden ist, bringt das Weibchen jedes Jahr Nachwuchs zur Welt. In Gegenden, in denen es nicht viel zu essen gibt, werden Größe und Häufigkeit der Kupplungen reduziert (alle 2-3 Jahre). In einem Jahr der Zucht kann ein Weibchen 8-107 Eier, in der Regel jedoch 25-50 Eier produzieren. Das durchschnittliche Körpergewicht von Babys bei der Geburt beträgt 0,15 g.

Im Gegensatz zu den meisten Arten bleibt die netzartige weibliche Python über den Bruteiern gefaltet, um sie mit Wärme zu versorgen. Durch den Prozess der Muskelkontraktion erwärmt das Weibchen die Eier, was zu einer Erhöhung der Inkubationsrate und der Überlebenschancen der Nachkommen führt. Nach der Geburt kennen kleine retikulierte Pythons die elterliche Fürsorge fast nicht und sind gezwungen, sich zu verteidigen und Nahrung zu suchen.

Natürliche Feinde retikulierter Pythons

Foto: Netzpython in der Natur

Retikulierte Pythons haben aufgrund ihrer Größe und Kraft praktisch keine natürlichen Feinde. Schlangeneier und kürzlich geschlüpfte Pythons werden von Raubtieren wie Vögeln (Falken, Adler, Reiher) und kleinen Säugetieren angegriffen. Die Jagd auf adulte retikulierte Pythons ist auf Krokodile und andere große Raubtiere beschränkt. Pythons sind nur am Rande von Teichen einem hohen Angriffsrisiko ausgesetzt, wo Sie Angriffe von einem Krokodil erwarten können. Die einzige Verteidigung gegen Raubtiere, zusätzlich zur Größe, ist eine starke Kompression des Körpers durch eine Schlange, die dem Feind in 3-4 Minuten das Leben quetschen kann.

Der Mensch ist der Hauptfeind der Maschenpython. Diese Tiere werden getötet und gehäutet, um Lederwaren herzustellen. Schätzungen zufolge werden zu diesem Zweck jährlich eine halbe Million Tiere getötet. In Indonesien werden auch retikulierte Pythons konsumiert. Die Jagd auf Tiere ist gerechtfertigt, weil die Bewohner ihr Vieh und ihre Kinder vor Schlangen schützen wollen.

Die retikulierte Python ist eine der wenigen Schlangen, die Menschen erbeuten.Diese Angriffe sind nicht sehr häufig, aber diese Art forderte sowohl in freier Wildbahn als auch in Gefangenschaft mehrere Opfer.

Es ist zuverlässig über mehrere Fälle bekannt:

  • 1932 wurde ein Teenager auf den Philippinen von einer 7,6 m langen Python gefressen, die von zu Hause weglief, und als er gefunden wurde, fanden sie sie im Inneren des Sohnes des Besitzers der Schlange
  • 1995 tötete eine große Netzpythonschlange den 29-jährigen Ee Hyun Chuan aus dem südmalaysischen Bundesstaat Johor. Die Schlange schlang sich um einen leblosen Körper, den Kopf in die Kiefer geklemmt, als der Bruder des Opfers darauf stieß.
  • 2009 wurde ein 3-jähriger Junge aus Las Vegas in eine Spirale mit einer 5,5 m langen Maschenpythonschlange gewickelt, und die Mutter rettete das Baby, indem sie mit einem Messer auf die Pythonschlange schlug.
  • 2017 wurde die Leiche eines 25-jährigen indonesischen Bauern im Magen einer 7-Meter-Netzpython gefunden. Die Schlange wurde getötet und der Körper entfernt. Dies war der erste vollständig bestätigte Fall, bei dem sich eine Python von Menschen ernährte. Der Prozess der Körperextraktion wurde anhand von Fotos und Videos dokumentiert.
  • Im Juni 2018 wurde ein 54-jähriger Indonesier von einer 7-Meter-Python gefressen. Sie verschwand während der Arbeit in ihrem Garten und am nächsten Tag fand das Suchteam eine Pythonschlange in der Nähe des Gartens mit einer Ausbuchtung an ihrem Körper. Das Video mit der ausgeweideten Schlange wurde im Netzwerk veröffentlicht.

Populations- und Artenstatus

Foto: Schlange retikulierte Python

Der Populationsstatus von retikuliertem Python ist an verschiedenen Orten des geografischen Bereichs sehr unterschiedlich. Es gibt viele dieser Schlangen in Thailand, wo sie während der Regenzeit in die Häuser der Menschen kriechen. Auf den Philippinen ist diese Art auch in Wohngebieten weit verbreitet. Die philippinische Subpopulation gilt als stabil und nimmt sogar zu. Retikulierte Pythons sind in Myanmar selten. In Kambodscha nahm die Bevölkerung in zehn Jahren ebenfalls ab und ging um 30-50% zurück. Vertreter der Gattung sind in Vietnam in freier Wildbahn sehr selten, aber viele Individuen wurden im Süden des Landes gefunden.

Interessante Tatsache: Der Mesh-Python ist nicht gefährdet. Nach CITES-Anhang II ist der Verkauf und Verkauf seiner Haut jedoch überlebenssicher geregelt. Diese Art ist nicht in der Roten Liste der IUCN aufgeführt.

Es wird angenommen, dass Python in den südlichen Teilen dieses Landes, wo es einen geeigneten Lebensraum gibt, einschließlich geschützter Gebiete, weiterhin verbreitet ist. Wahrscheinlich rückläufig in Laos. Der Rückgang in ganz Indochina wurde durch Landumwandlung verursacht. Retikulierte Python ist in vielen Gebieten Kalimantans noch immer eine relativ häufige Art. Die Subpopulationen in Malaysia und Indonesien sind trotz intensiver Fischerei stabil.

Mesh-Python ist in Singapur trotz der Verstädterung, in der das Fischen dieser Art verboten ist, weiterhin verbreitet. In Sarawak und Sabah ist diese Art sowohl in Wohngebieten als auch in Naturgebieten verbreitet, und es gibt keine Hinweise auf einen Bevölkerungsrückgang. Die durch die Rodung und Ausbeutung von Lebensräumen verursachten Probleme können durch eine Zunahme von Ölpalmenplantagen ausgeglichen werden, da sich die Schlangenpythonschlange gut in diesen Lebensräumen schlängelt.

Sehen Sie sich das Video an: Learn Python - Full Course for Beginners Tutorial (Juli 2020).

Pin
Send
Share
Send