>>>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)
Isto irá trabalhar na linha de comando interativa, mas aparentemente apenas em objetos que são importados (não objetos definidos dentro do prompt interativo). E, claro, só funcionará se o Python puder encontrar o código-fonte (portanto, não em objetos integrados, libs C, arquivos .pyc, etc)
Exemplo quebrado aqui, deveria ser i.getsource (MyFunction).
dia
10
Embora eu geralmente concorde que inspecté uma boa resposta, discordo que você não pode obter o código-fonte dos objetos definidos no interpretador. Se você usar dill.source.getsourcefrom dill, poderá obter a origem das funções e lambdas, mesmo que sejam definidos interativamente. Ele também pode obter o código de métodos e funções de classe associada ou não definida em curries ... entretanto, você pode não ser capaz de compilar esse código sem o código do objeto envolvente.
para muitos builtins (como regra, funções definidas em módulos C), ele inclui a assinatura da função também, mas não em geral.
u0b34a0f6ae
1
Enquanto estiver no shell interativo, "help (object)" exibirá isso de uma forma mais navegável.
TK.
@kaizer Uma assinatura de função também não é uma definição. O que __doc__realmente retorna é tudo o que o autor do código colocou na string doc (a string entre aspas triplas). Nada mais nada menos.
Triptych
Acho que a definição é ambígua aqui. Para mim, pode significar o docstring ou o texto do código ou ambos ou mesmo o objeto do código em um trecho
John La Rooy
-6
Você pode usar o __doc__na função, tome a hog()função como exemplo: Você pode ver o uso de hog()assim:
from skimage.feature import hog
print hog.__doc__
O resultado será:
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.
Respostas:
Se você estiver importando a função, pode usar
inspect.getsource
:Isto irá trabalhar na linha de comando interativa, mas aparentemente apenas em objetos que são importados (não objetos definidos dentro do prompt interativo). E, claro, só funcionará se o Python puder encontrar o código-fonte (portanto, não em objetos integrados, libs C, arquivos .pyc, etc)
fonte
Se estiver usando iPython , você pode usar
function_name?
para obter ajuda efunction_name??
imprimir o código-fonte, se puder.fonte
Esta é a maneira que descobri como fazer:
Isso remove os novos caracteres de linha e imprime a função de maneira adequada
fonte
Embora eu geralmente concorde que
inspect
é uma boa resposta, discordo que você não pode obter o código-fonte dos objetos definidos no interpretador. Se você usardill.source.getsource
fromdill
, poderá obter a origem das funções e lambdas, mesmo que sejam definidos interativamente. Ele também pode obter o código de métodos e funções de classe associada ou não definida em curries ... entretanto, você pode não ser capaz de compilar esse código sem o código do objeto envolvente.fonte
Use
help(function)
para obter a descrição da função.Você pode ler mais sobre
help()
aqui .fonte
Você pode usar a palavra-chave __doc__:
fonte
__doc__
realmente retorna é tudo o que o autor do código colocou na string doc (a string entre aspas triplas). Nada mais nada menos.Você pode usar o
__doc__
na função, tome ahog()
função como exemplo: Você pode ver o uso dehog()
assim:O resultado será:
fonte