Si vous importez la fonction, vous pouvez utiliser inspect.getsource:
>>>import re
>>>import inspect
>>>print inspect.getsource(re.compile)def compile(pattern, flags=0):"Compile a regular expression pattern, returning a pattern object."return _compile(pattern, flags)
Cela va travailler dans l'invite interactive, mais apparemment uniquement sur des objets importés ( les objets ne sont pas définis dans le message interactif). Et bien sûr, cela ne fonctionnera que si Python peut trouver le code source (donc pas sur les objets intégrés, les bibliothèques C, les fichiers .pyc, etc.)
parfois, vous devez séparer la fonction sur une autre ligne pour appeler? par exemple model.function ?? ne fonctionne pas mais f = model.function; F?? works
thecheech
12
Voici comment j'ai compris comment le faire:
import inspect as i
import sys
sys.stdout.write(i.getsource(MyFunction))
Cela supprime les nouveaux caractères de ligne et imprime joliment la fonction
Exemple cassé, il devrait s'agir de i.getsource (MyFunction).
svth
10
Bien que je convienne généralement que inspectc'est une bonne réponse, je ne suis pas d'accord pour dire que vous ne pouvez pas obtenir le code source des objets définis dans l'interpréteur. Si vous utilisez dill.source.getsourcefrom dill, vous pouvez obtenir la source des fonctions et des lambdas, même si elles sont définies de manière interactive. Il peut également obtenir le code des méthodes et fonctions de classe liées ou non liées définies dans les curry ... Cependant, vous ne pourrez peut-être pas compiler ce code sans le code de l'objet englobant.
parfois cela ne fonctionne pas directement avec: getsource (ma_fonction) , mais alors je pourrais le faire fonctionner avec getsource (ma_fonction.func_code)
Afflatus
3
Utilisez help(function)pour obtenir la description de la fonction.
pour de nombreuses fonctions intégrées (en règle générale, les fonctions définies dans les modules C), il inclut également la signature de la fonction, mais pas en général.
u0b34a0f6ae
1
Dans le shell interactif, "help (object)" l'affichera d'une manière plus navigable.
TK.
@kaizer Une signature de fonction n'est pas non plus une définition. Quoi en __doc__fait renvoie est ce que l'auteur du code a mis dans la chaîne doc (la chaîne entre guillemets triples). Ni plus ni moins.
Triptyque du
Je pense que la définition est ambiguë ici. Pour moi, cela pourrait signifier la docstring ou le texte de code ou les deux ou même l'objet de code à la fois
John La Rooy
-6
Vous pouvez utiliser le __doc__dans la fonction, prenez la hog()fonction comme exemple: Vous pouvez voir l'utilisation de hog()comme ceci:
from skimage.feature import hog
print hog.__doc__
La sortie sera:
ExtractHistogram of OrientedGradients(HOG)for a given image.Compute a Histogram of OrientedGradients(HOG) by
1.(optional)global image normalisation
2. computing the gradient image in x and y
3. computing gradient histograms
4. normalising across blocks
5. flattening into a feature vector
Parameters----------
image :(M, N) ndarray
Input image (greyscale).
orientations : int
Number of orientation bins.
pixels_per_cell :2 tuple (int, int)Size(in pixels) of a cell.
cells_per_block :2 tuple (int,int)Number of cells in each block.
visualise : bool, optional
Alsoreturn an image of the HOG.
transform_sqrt : bool, optional
Apply power law compression to normalise the image before
processing. DO NOT use this if the image contains negative
values.Also see `notes` section below.
feature_vector : bool, optional
Return the data as a feature vector by calling .ravel() on the result
just before returning.
normalise : bool, deprecated
The parameter is deprecated.Use`transform_sqrt`for power law
compression.`normalise` has been deprecated.Returns-------
newarr : ndarray
HOG for the image as a 1D(flattened) array.
hog_image : ndarray (if visualise=True)
A visualisation of the HOG image.References----------* http://en.wikipedia.org/wiki/Histogram_of_oriented_gradients*Dalal, N andTriggs, B,Histograms of OrientedGradientsforHumanDetection, IEEE ComputerSocietyConference on ComputerVisionandPatternRecognition2005SanDiego, CA, USA
Notes-----Power law compression, also known asGamma correction,is used to reduce
the effects of shadowing and illumination variations.The compression makes
the dark regions lighter.When the kwarg `transform_sqrt`is set to
``True``, the function computes the square root of each color channel
and then applies the hog algorithm to the image.
Réponses:
Si vous importez la fonction, vous pouvez utiliser
inspect.getsource
:Cela va travailler dans l'invite interactive, mais apparemment uniquement sur des objets importés ( les objets ne sont pas définis dans le message interactif). Et bien sûr, cela ne fonctionnera que si Python peut trouver le code source (donc pas sur les objets intégrés, les bibliothèques C, les fichiers .pyc, etc.)
la source
Si vous utilisez iPython , vous pouvez utiliser
function_name?
pour obtenir de l'aide etfunction_name??
imprimer la source, si possible.la source
Voici comment j'ai compris comment le faire:
Cela supprime les nouveaux caractères de ligne et imprime joliment la fonction
la source
Bien que je convienne généralement que
inspect
c'est une bonne réponse, je ne suis pas d'accord pour dire que vous ne pouvez pas obtenir le code source des objets définis dans l'interpréteur. Si vous utilisezdill.source.getsource
fromdill
, vous pouvez obtenir la source des fonctions et des lambdas, même si elles sont définies de manière interactive. Il peut également obtenir le code des méthodes et fonctions de classe liées ou non liées définies dans les curry ... Cependant, vous ne pourrez peut-être pas compiler ce code sans le code de l'objet englobant.la source
Utilisez
help(function)
pour obtenir la description de la fonction.Vous pouvez en savoir plus
help()
ici .la source
Vous pouvez utiliser le mot-clé __doc__:
la source
__doc__
fait renvoie est ce que l'auteur du code a mis dans la chaîne doc (la chaîne entre guillemets triples). Ni plus ni moins.Vous pouvez utiliser le
__doc__
dans la fonction, prenez lahog()
fonction comme exemple: Vous pouvez voir l'utilisation dehog()
comme ceci:La sortie sera:
la source