Muss Python kompiliert werden?
Eine oft gestellte Frage lautet: Ist Python eine interpretierte Sprache? Wird es kompiliert? Diese Frage ist nicht so einfach zu beantworten wie gedacht. Wie viele Menschen, die die Welt verstehen, sind sie es gewohnt, manche Dinge anhand eines einfachen Modells zu beurteilen. Tatsächlich enthält es viele, viele Details.
Im Allgemeinen bedeutet Kompilieren das Konvertieren einer Hochsprache in Maschinencode, der von der CPU ausgeführt werden kann. Wenn Sie C kompilieren, ist genau das, was Sie tun. Das Ergebnis der Kompilierung ist eine binäre ausführbare Datei, und Ihr System kann dieses Programm direkt ausführen.
Im Gegensatz dazu bedeutet die Erklärung Folgendes: Wenn das Programm ausgeführt wird, liest es jedes Mal eine Codezeile in der Quelldatei, führt die entsprechende Operation aus und wiederholt diese Zeile für Zeile. So funktionieren natürlich sogenannte Skriptsprachen.
Aber tatsächlich weist die obige Definition zu viele Einschränkungen auf. Eine echte Sprache verwendet normalerweise verschiedene Implementierungsmethoden, um nützlichere und leistungsfähigere Funktionen zu erhalten. Wir können Kompilierung allgemeiner verstehen: die Umwandlung einer Sprache in eine andere Sprachform. Im Allgemeinen ist die Quellsprache fortgeschrittener als die Zielsprache, beispielsweise die Konvertierung von C in Maschinencode. Natürlich handelt es sich bei der Umstellung von JavaScript 8 auf JavaScript 5 auch um eine Art Kompilierung.
In Python wird Quellcode in eine niedrigere Form kompiliert, die wir Bytecode nennen. Bytecode ist eine Folge von Anweisungen, ähnlich dem Befehlssatz einer CPU. Allerdings wird der Bytecode nicht direkt von der CPU ausgeführt, sondern in der virtuellen Maschine. Natürlich imitiert die virtuelle Maschine hier nicht die gesamte Betriebssystemumgebung, sondern bietet nur eine Umgebung für die Ausführung von Bytecode.
Sehen wir uns einen kleinen Codeausschnitt in Python und den entsprechenden Bytecode an
Nachdem wir den Inhalt des Bytecodes gelesen haben, wissen wir, dass f' .. .' Das Funktionsprinzip dieses formatierten Zeichenfolgenformats besteht darin, die darin enthaltene Zeichenfolge in eine Reihe von Literalzeichenfolgen und Variablen umzuwandeln und diese dann mit dem +-Zeichen zu verbinden.
dis ist das Disassemblierungsmodul in der Python-Standardbibliothek, das die Bytecode-Informationen von Python-Code anzeigen kann. Die oben erwähnte virtuelle Maschine, die den Bytecode ausführt, kann in jeder Sprache implementiert werden, einschließlich Python selbst. Wenn Sie interessiert sind, können Sie sich dieses Projekt nedbat/byterun auf GitHub ansehen. Dieses Projekt kann zum Lernen verwendet werden, ist jedoch nicht für Produktionsumgebungen geeignet.
Wenn wir Python ausführen, können wir den Kompilierungsprozess jedoch überhaupt nicht spüren. Wir führen einfach die .py-Datei aus und die Kompilierung wird bei Bedarf automatisch durchgeführt. Dies unterscheidet sich von JAVA. Jedes Mal, wenn Sie JAVA-Code schreiben und ihn ausführen möchten, müssen Sie ihn manuell in eine .class-Datei kompilieren und dann ausführen. Aus diesem Grund wird JAVA als kompilierte Sprache und Python als interpretierte Sprache bezeichnet. Tatsächlich werden beide Sprachen jedoch bei der Ausführung zunächst in Bytecode kompiliert und dann zur Ausführung an die virtuelle Maschine übergeben.
Python verfügt auch über eine wichtige Funktion, nämlich die interaktive Befehlszeile. Sie können eine Zeile einer Python-Anweisung eingeben und sofort die Eingabetaste drücken, um sie auszuführen. Tatsächlich wird Python auch in diesem Prozess zunächst in Bytecode konvertiert und dann ausgeführt. Diese interaktive Befehlszeilenfunktion ist in vielen kompilierten Sprachen nicht verfügbar. Auch weil es keinen expliziten Aufruf des Compilers gibt, nennen viele Leute das Programm, das Python-Quelldateien ausführt, einen Python-Interpreter.
Auch wenn es relativ einfach ist, möchte ich es dennoch hinzufügen. Einige kompilierte Sprachen wie C oder JAVA verfügen auch über interaktive Befehlszeilen, diese stehen jedoch nicht im Mittelpunkt dieser Sprachen. JAVA wurde zunächst in Bytecode kompiliert und dann ausgeführt. Mithilfe der Just-in-Time-Kompilierungstechnologie (JIT) kann es ähnlich wie bei C direkt in Maschinencode kompiliert werden.
Wie aus der obigen Beschreibung ersichtlich ist, können Interpretation und Zusammenstellung nicht vollständig getrennt werden. Oft möchten wir einige Wörter verwenden, um vorhandene Programmiersprachen zu klassifizieren, aber tatsächlich ist dies zu schwierig.
Als Letztes ist zu beachten, dass die Art und Weise, wie Ihr Code ausgeführt wird, nur eine Frage der Sprachimplementierung ist, nicht ein Merkmal der Sprache. Oben sprechen wir über Python, aber es ist eigentlich eine Beschreibung von CPython. CPython ist ein Interpreter, der so genannt wird, weil der Interpreter in C geschrieben ist, das auch der Standardinterpreter für Python ist. Natürlich gibt es noch viele andere Interpreter, zum Beispiel ist PyPy ein weiterer Interpreter, der die JIT-Technologie nutzt und dessen Laufgeschwindigkeit im Vergleich zu CPython deutlich verbessert ist.
Zurück zur Frage im Titel: Der Grund, warum Python als interpretierte Sprache bezeichnet wird, liegt darin, dass es Kompilierungsoperationen nicht explizit aufruft und mehr interpretierte Merkmale aufweist. Tatsächlich gibt es jedoch eine Kompilierung, die von der Implementierung der Sprache abhängt, dh vom Design des Interpreters.
Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonMuss Python kompiliert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Der Polymorphismus ist ein Kernkonzept in der objektorientierten Programmierung von Python-Objekte und bezieht sich auf "eine Schnittstelle, mehrere Implementierungen" und ermöglicht eine einheitliche Verarbeitung verschiedener Arten von Objekten. 1. Polymorphismus wird durch Umschreiben durch Methode implementiert. Unterklassen können übergeordnete Klassenmethoden neu definieren. Zum Beispiel hat die Spoke () -Methode der Tierklasse unterschiedliche Implementierungen in Hunde- und Katzenunterklassen. 2. Die praktischen Verwendungen des Polymorphismus umfassen die Vereinfachung der Codestruktur und die Verbesserung der Skalierbarkeit, z. 3. Die Python -Implementierungspolymorphismus muss erfüllen: Die übergeordnete Klasse definiert eine Methode, und die untergeordnete Klasse überschreibt die Methode, erfordert jedoch keine Vererbung derselben übergeordneten Klasse. Solange das Objekt dieselbe Methode implementiert, wird dies als "Ententyp" bezeichnet. 4. Zu beachten ist die Wartung

Parameter sind Platzhalter beim Definieren einer Funktion, während Argumente spezifische Werte sind, die beim Aufrufen übergeben wurden. 1. Die Positionsparameter müssen in der Reihenfolge übergeben werden, und eine falsche Reihenfolge führt zu Fehlern im Ergebnis. 2. Die Schlüsselwortparameter werden durch Parameternamen angegeben, die die Reihenfolge ändern und die Lesbarkeit verbessern können. 3. Die Standardparameterwerte werden zugewiesen, wenn sie definiert sind, um einen doppelten Code zu vermeiden. Variable Objekte sollten jedoch als Standardwerte vermieden werden. 4. Argumente und *KWARGs können die unsichere Anzahl von Parametern bewältigen und sind für allgemeine Schnittstellen oder Dekorateure geeignet, sollten jedoch mit Vorsicht verwendet werden, um die Lesbarkeit aufrechtzuerhalten.

Eine Klassenmethode ist eine Methode, die in Python über den @ClassMethod Decorator definiert ist. Sein erster Parameter ist die Klasse selbst (CLS), mit der auf den Klassenzustand zugreifen oder diese ändern wird. Es kann durch eine Klasse oder Instanz aufgerufen werden, die die gesamte Klasse und nicht auf eine bestimmte Instanz betrifft. In der Personklasse zählt beispielsweise die Methode show_count () die Anzahl der erstellten Objekte. Wenn Sie eine Klassenmethode definieren, müssen Sie den @classMethod Decorator verwenden und die ersten Parameter -CLS wie die Methode Change_var (new_value) benennen, um Klassenvariablen zu ändern. Die Klassenmethode unterscheidet sich von der Instanzmethode (Selbstparameter) und der statischen Methode (keine automatischen Parameter) und eignet sich für Fabrikmethoden, alternative Konstruktoren und die Verwaltung von Klassenvariablen. Gemeinsame Verwendungen umfassen:

ListsericinpythonextractSaportionofalistusingindices.1

Iteratoren sind Objekte, die __iter __ () und __next __ () Methoden implementieren. Der Generator ist eine vereinfachte Version von Iteratoren, die diese Methoden automatisch über das Keyword für Rendite implementiert. 1. Der Iterator gibt jedes Mal, wenn er als nächstes anruft, ein Element zurück und wirft eine Ausnahme in der Stopperation aus, wenn es keine Elemente mehr gibt. 2. Der Generator verwendet Funktionsdefinition, um Daten auf Bedarf zu generieren, Speicher zu speichern und unendliche Sequenzen zu unterstützen. 3. Verwenden Sie Iteratoren, wenn Sie vorhandene Sätze verarbeiten, und verwenden Sie einen Generator, wenn Sie dynamisch Big Data oder faule Bewertung generieren, z. B. das Laden von Zeilen nach Zeile beim Lesen großer Dateien. Hinweis: Iterbare Objekte wie Listen sind keine Iteratoren. Sie müssen nach dem Erreichen des Iterators nach seinem Ende nachgebaut werden, und der Generator kann ihn nur einmal durchqueren.

Es gibt viele Möglichkeiten, zwei Listen zusammenzuführen, und die Auswahl des richtigen Weges kann die Effizienz verbessern. 1. Verwenden Sie das Spleißen der Nummer, um eine neue Liste zu generieren, z. B. List1 List2; 2. verwenden Sie die ursprüngliche Liste, z. B. list1 = list2; 3.. Verwenden Sie Extend () -Methoden, um in der ursprünglichen Liste zu arbeiten, z. B. List1.Ettend (List2); 4. Verwenden Sie die Nummer zum Auspacken und Zusammenführen (Python3.5), wie z. Verschiedene Methoden sind für unterschiedliche Szenarien geeignet, und Sie müssen basierend darauf auswählen, ob die Originalliste und die Python -Version geändert werden sollen.

Der Schlüssel zum Umgang mit der API -Authentifizierung besteht darin, die Authentifizierungsmethode korrekt zu verstehen und zu verwenden. 1. Apikey ist die einfachste Authentifizierungsmethode, die normalerweise in den Anforderungsheader- oder URL -Parametern platziert ist. 2. BasicAuth verwendet Benutzername und Kennwort für die Basis64 -Codierungsübertragung, die für interne Systeme geeignet ist. 3.. OAuth2 muss das Token zuerst über Client_id und Client_secret erhalten und dann das BearerToken in den Anforderungsheader bringen. V. Kurz gesagt, die Auswahl der entsprechenden Methode gemäß dem Dokument und das sichere Speichern der Schlüsselinformationen ist der Schlüssel.

Pythons MagicMethods (oder Dunder -Methoden) sind spezielle Methoden, um das Verhalten von Objekten zu definieren, die mit einem doppelten Unterstrich beginnen und enden. 1. Sie ermöglichen es Objekten, auf integrierte Operationen wie Addition, Vergleich, String-Darstellung usw. Zu reagieren; 2. Die gemeinsamen Anwendungsfälle umfassen Objektinitialisierung und Darstellung (__init__, __Rep__, __str__), arithmetische Operationen (__add__, __sub__, __mul__) und Vergleichsoperationen (__EQ__, ___LT__); 3. Wenn Sie es verwenden, stellen Sie sicher, dass ihr Verhalten den Erwartungen entspricht. Zum Beispiel sollte __Rep__ Ausdrücke refitueller Objekte zurückgeben, und arithmetische Methoden sollten neue Instanzen zurückgeben. 4.. Überbeanspruchte oder verwirrende Dinge sollten vermieden werden.
