Gibt es eine Möglichkeit zu sehen, wie integrierte Funktionen in Python funktionieren? Ich meine nicht nur, wie man sie benutzt, sondern auch, wie sie gebaut wurden, was ist der Code hinter dem Sortieren oder Aufzählen usw.?
quelle
Gibt es eine Möglichkeit zu sehen, wie integrierte Funktionen in Python funktionieren? Ich meine nicht nur, wie man sie benutzt, sondern auch, wie sie gebaut wurden, was ist der Code hinter dem Sortieren oder Aufzählen usw.?
Da Python Open Source ist, können Sie den Quellcode lesen .
Um herauszufinden, in welcher Datei ein bestimmtes Modul oder eine bestimmte Funktion implementiert ist, können Sie normalerweise das __file__
Attribut drucken . Alternativ können Sie das inspect
Modul verwenden, siehe Abschnitt Abrufen des Quellcodes in der Dokumentation von inspect
.
Für integrierte Klassen und Methoden ist dies , da nicht so einfach inspect.getfile
und inspect.getsource
wird eine Art Fehler zurück , die besagt , dass das Objekt eingebaut ist. Viele der integrierten Typen befinden sich jedoch im Objects
Unterverzeichnis des Python-Quell-Trunks . Zum Beispiel finden Sie hier für die Umsetzung der enumerate - Klasse oder hier für die Umsetzung des list
Art.
enumerate
?sorted()
ist in /Python/bltinmodule.c, obwohl es nur aufruft,list.sort()
so dass die eigentliche Quelle in /Objects/listobject.c istHier ist eine Kochbuchantwort zur Ergänzung der Antwort von @Chris . CPython ist zu GitHub gewechselt und das Mercurial-Repository wird nicht mehr aktualisiert:
git clone https://github.com/python/cpython.git
Der Code wird in ein Unterverzeichnis mit dem Namen
cpython
-> ausgechecktcd cpython
print()
...egrep --color=always -R 'print' | less -R
Python/bltinmodule.c
->builtin_print()
Genießen.
quelle
Ich musste ein wenig graben, um die Quelle des Folgenden zu finden,
Built-in Functions
da die Suche Tausende von Ergebnissen liefern würde. (Viel Glück bei der Suche nach einer der Quellen)Wie auch immer, alle diese Funktionen sind in
bltinmodule.c
Funktionen definiert, die mit beginnenbuiltin_{functionname}
quelle
listobject.c
github.com/python/cpython/tree/master/ObjectsDie iPython- Shell macht dies einfach:
function?
Sie erhalten die Dokumentation.function??
zeigt auch den Code. ABER dies funktioniert nur für reine Python-Funktionen.Dann können Sie jederzeit den Quellcode für (c) Python herunterladen .
Wenn Sie an pythonischen Implementierungen der Kernfunktionalität interessiert sind, schauen Sie sich die PyPy- Quelle an.
quelle
2 Methoden,
help()
inspect
1) inspizieren:
Verwenden Sie das inpsect- Modul, um den gewünschten Code zu untersuchen ... HINWEIS: Sie können den Code nur für Module (auch bekannt als) Pakete untersuchen, die Sie importiert haben
für zB:
2) help ():
Sie können einfach den
help()
Befehl verwenden, um Hilfe zu den integrierten Funktionen sowie zum Code zu erhalten.Zum Beispiel: Wenn Sie den Code für str () sehen möchten, geben Sie einfach - ein
help(str)
es wird so zurückkehren,
quelle
Eine völlig unbekannte Ressource ist das Python Developer Guide .
In einer (etwas) aktuellen GH- Ausgabe wurde ein neues Kapitel hinzugefügt, um die von Ihnen gestellte Frage zu beantworten: CPython-Quellcode-Layout . Sollte sich etwas ändern, wird diese Ressource ebenfalls aktualisiert.
quelle
Wie durch @ Jim erwähnt, wird die Dateiorganisation beschrieben hier . Wiedergabe zur leichteren Entdeckung:
quelle