Ich möchte den Python-Quellcode lesen.
Meine Erfahrung,
Ich kenne Python und Java sehr gut. Ich kenne einige andere Sprachen auf verschiedenen Sprachniveaus, aber weder C / C + / noch besonders gut. Ich habe C am College studiert, aber noch nie professionell darin programmiert.
Meine Gründe für das Lesen dieses Codes.
- Verstehe, wie Python unter der Haube funktioniert.
- Lerne C besser.
1 ist mir wichtiger als 2.
Wie soll ich das machen?
Antworten:
Beginnen Sie mit dem Erlernen der Python C-API. Es ist eine große und reichhaltige API, und die Python-Quelle verwendet sie natürlich überall. Sie werden nicht sehr weit in den Python-Quellcode vordringen, bevor Sie verstehen müssen, was unter Py_INCREF usw. zu verstehen ist.
Ich habe auf Pycon eine Präsentation gehalten, in der die API erklärt wurde: Ein Wirbelwind-Ausflug durch Python C-Erweiterungen , die Sie möglicherweise hilfreich finden. C-Erweiterungen verwenden dieselbe API wie der Python-Code.
quelle
Wenn Sie hauptsächlich an 1 interessiert sind, würde ich zunächst die Python-Quelle verschiedener Module lesen (und nicht direkt zum C springen). Immer wenn ich die Quelle einiger Module las, habe ich neue Dinge über die Python-Programmierung gelernt.
Zweitens, wenn Sie versuchen, C besser zu lernen, würde ich persönlich etwas völlig anderes vorschlagen: Programm darin. Nur statisch Quellcode zu lesen ist nicht dazu bringen, C besser zu verstehen (oder zumindest ist es ein begrenzter Ansatz; es könnte Sie ein wenig besser machen, aber es gibt nur so viel, dass das Lesen der Quelle Sie bringt).
Nachdem Sie mindestens ein mittelgroßes Projekt in C programmiert haben, dann würde ich in Python Quelle beginnen suchen. Das ist wirklich der einzige Weg, um C besser zu kennen, und ich denke wirklich, dass das Lesen der C-Quelle von Python, ohne C gut zu kennen, Sie nicht sehr weit bringt.
Eine Idee für ein C-Projekt
Tatsächlich ist hier eine Idee für ein C-Projekt: Schreiben Sie einen Python-Interpreter in C. Offensichtlich wird es nicht einmal annähernd abgeschlossen sein, und dies ist ein ziemlich schwieriges Projekt, aber wenn Sie sich nur auf einige Teile der Sprache konzentrieren, ich Ich denke, es ist eine gute Idee.
Es wird Ihnen nicht nur helfen, C zu lernen, es wird Ihnen auch helfen, Python viel besser zu verstehen, noch bevor Sie sich die Quelle ansehen: Sie müssen ein tieferes Verständnis für vieles haben Dinge in Python haben, Sie werden die Design-Kompromisse verstehen wie Python funktioniert usw.
Wenn Sie dann endlich Pythons Code lesen, werden Sie nicht nur verstehen, warum manche Dinge so funktionieren, sondern wahrscheinlich auch viele wirklich coole C-Techniken lernen, die Probleme lösen, die Sie hatten.
quelle
1) Stellen Sie zunächst sicher, dass Sie Ihr eigenes Python erstellen und es in einem Debugger ausführen können. Sie können also nicht nur Druckausdrücke hinzufügen, sondern auch an Punkten brechen und dem Code-Fluss folgen. Wenn Sie über Tools verfügen, mit denen Sie Funktionsaufrufe nachverfolgen können, benötigen Sie diese.
2) Beginnen Sie mit der Datei, die die Datentypen implementiert. Sie sind sehr leicht zu verstehen und Sie verbessern Ihre C-Sprachkenntnisse beim Lesen des Codes.
3) Erstellen Sie UML-Diagramme - einfache Hilfsmittel zum Zeichnen wie Argo UML oder MS Visio können Ihnen hier helfen. Notieren Sie den Code-Fluss.
4) Lesen Sie den Startcode für Python. Sehen Sie, was und wie die Basisinfrastruktur initialisiert wird.
6) Ty, um die Python-Seite zu 100% zu verstehen - selbst die schwierigeren Implementierungsdetails, was ein AST ist und welche gebundenen und ungebundenen Methoden sind und wie Sie sie implementieren würden. Wenn Sie ein Modell im Sinn haben, wie Sie einen Python-Interpreter schreiben würden, können Sie mit dem letzten Hauptschritt fortfahren.
7) Schreiben Sie eine Debugger-Erweiterung mit der bereitgestellten schnellen Debugger-C-API. Dies hilft Ihnen, Ihre C-Fähigkeiten zu verbessern.
8) Machen Sie den letzten Master-Schritt und tauchen Sie in das Herz des Interpreter-Codes ein. Dies ist für einen erfahrenen C-Programmierer sogar schwer zu lesen und zu verstehen. Lesen Sie, wie Ausdrücke ausgewertet und Methodensuchen zwischengespeichert werden, Frames für Gültigkeitsbereichsregeln eingerichtet werden usw. Es ist schwierig und komplex - in Bezug auf Komplexität und Codezeilen.
9) Starten Sie Adobe Photoshop, erstellen Sie ein gut aussehendes "Master of Python" -Diplom und hängen Sie es an Ihre Bürowand.
quelle
Laden Sie die Quelle von der Python-Website herunter. Angenommen, Sie haben die Quelle in ein Verzeichnis mit dem Namen Python-3.1.1 entpackt. Ich schlage Ihnen zwei Ausgangspunkte im Python-Quellcode vor, anhand derer Sie untersuchen können, wie Python unter der Haube funktioniert:
Untersuchen Sie, wie die Python Virtual Machine den vom Interperter generierten Bytecode ausführt. Die Python-VM befindet sich in der Datei Python-3.1.1 / Python / ceval.c. Der Kern der VM ist eine Eval-Schleife, die bei der Funktion PyEval_EvalFrameEx in ceval.c beginnt. Lesen Sie die Quelle und die Inline-Kommentare durch. Ich bin sicher, Sie würden es genießen.
Eine weitere Option besteht darin, zu untersuchen, wie integrierte Python-Datentypen wie Listen, Wörterbücher und Mengen implementiert werden. Zum Beispiel sind Sets in Python-3.1.1 / Objects / setobject.c implementiert. Das Objects-Verzeichnis enthält auch Implementierungen anderer Datentypen.
quelle
Die Frage ist ziemlich weit gefasst, daher denke ich, dass die beste Antwort darin besteht, einfach die Python-Quelle herunterzuladen und verrückt zu werden. Wählen Sie ein Modul oder einen Abschnitt von Python aus, den Sie gut kennen, und überprüfen Sie, was sich unter der Haube befindet.
quelle