Existe-t-il un moyen de voir comment les fonctions intégrées fonctionnent en python? Je ne veux pas dire simplement comment les utiliser, mais aussi comment ont-ils été construits, quel est le code derrière trié ou énuméré, etc.?
la source
Existe-t-il un moyen de voir comment les fonctions intégrées fonctionnent en python? Je ne veux pas dire simplement comment les utiliser, mais aussi comment ont-ils été construits, quel est le code derrière trié ou énuméré, etc.?
Puisque Python est open source, vous pouvez lire le code source .
Pour savoir dans quel fichier un module ou une fonction particulier est implémenté, vous pouvez généralement imprimer l' __file__
attribut. Vous pouvez également utiliser le inspect
module, voir la section Récupération du code source dans la documentation de inspect
.
Pour les classes et méthodes intégrées, ce n'est pas si simple car inspect.getfile
et inspect.getsource
renverra une erreur de type indiquant que l'objet est intégré. Cependant, de nombreux types intégrés peuvent être trouvés dans le Objects
sous-répertoire du coffre source Python . Par exemple, voir ici pour l'implémentation de la classe enumerate ou ici pour l'implémentation du list
type.
enumerate
?sorted()
est dans /Python/bltinmodule.c bien qu'il appelle justelist.sort()
pour que la source réelle soit dans /Objects/listobject.cVoici une réponse de livre de recettes pour compléter la réponse de @Chris , CPython a déménagé sur GitHub et le référentiel Mercurial ne sera plus mis à jour:
git clone https://github.com/python/cpython.git
Le code sera extrait dans un sous-répertoire appelé
cpython
->cd cpython
print()
...egrep --color=always -R 'print' | less -R
Python/bltinmodule.c
->builtin_print()
Prendre plaisir.
la source
J'ai dû creuser un peu pour trouver la source des éléments suivants,
Built-in Functions
car la recherche donnerait des milliers de résultats. (Bonne chance pour rechercher l'un de ceux-ci pour trouver où se trouve sa source)Quoi qu'il en soit, toutes ces fonctions sont définies dans Les
bltinmodule.c
fonctions commencent parbuiltin_{functionname}
la source
listobject.c
github.com/python/cpython/tree/master/ObjectsLe shell iPython rend cela facile:
function?
vous donnera la documentation.function??
montre également le code. MAIS cela ne fonctionne que pour les fonctions python pures.Ensuite, vous pouvez toujours télécharger le code source du (c) Python.
Si vous êtes intéressé par les implémentations pythoniques des fonctionnalités de base, jetez un œil à la source PyPy .
la source
2 méthodes,
help()
inspect
1) inspecter:
utilisez le module inpsect pour explorer le code que vous voulez ... REMARQUE: vous ne pouvez explorer le code que pour les modules (aka) packages que vous avez importés
par exemple:
2) aide ():
vous pouvez simplement utiliser la
help()
commande pour obtenir de l'aide sur les fonctions intégrées ainsi que sur son code.par exemple: si vous voulez voir le code de str (), tapez simplement -
help(str)
ça reviendra comme ça,
la source
Le Guide du développeur Python est une ressource inconnue .
Dans un problème (quelque peu) récent de GH , un nouveau chapitre a été ajouté pour répondre à la question que vous vous posez: la disposition du code source CPython . Si quelque chose devait changer, cette ressource sera également mise à jour.
la source
Comme mentionné par @Jim, l'organisation des fichiers est décrite ici . Reproduit pour faciliter la découverte:
la source