In JavaScript, si può stampare la definizione di una funzione. C'è un modo per farlo in Python?
(Stavo solo giocando in modalità interattiva e volevo leggere un modulo senza open (). Ero solo curioso).
In JavaScript, si può stampare la definizione di una funzione. C'è un modo per farlo in Python?
(Stavo solo giocando in modalità interattiva e volevo leggere un modulo senza open (). Ero solo curioso).
Risposte:
Se stai importando la funzione, puoi utilizzare 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)
Questo sarà lavorare nel prompt interattivo, ma a quanto pare solo su oggetti che vengono importati (non oggetti definiti all'interno del prompt interattivo). E ovviamente funzionerà solo se Python riesce a trovare il codice sorgente (quindi non su oggetti incorporati, librerie C, file .pyc, ecc.)
Anche se generalmente sono d'accordo che inspectè una buona risposta, non sono d'accordo sul fatto che non è possibile ottenere il codice sorgente degli oggetti definiti nell'interprete. Se usi dill.source.getsourcefrom dill, puoi ottenere l'origine di funzioni e lambda, anche se sono definiti in modo interattivo. Può anche ottenere il codice per dai metodi e dalle funzioni di classi associate o non associate definite in curry ... tuttavia, potresti non essere in grado di compilare quel codice senza il codice dell'oggetto che lo racchiude.
>>> from dill.source import getsource
>>>
>>> def add(x,y):
... return x+y
...
>>> squared = lambda x:x**2
>>>
>>> print getsource(add)
def add(x,y):
return x+y
>>> print getsource(squared)
squared = lambda x:x**2
>>>
>>> class Foo(object):
... def bar(self, x):
... return x*x+x
...
>>> f = Foo()
>>>
>>> print getsource(f.bar)
def bar(self, x):
return x*x+x
>>>
Puoi utilizzare la parola chiave __doc__:
#print the class description
print string.__doc__
#print function description
print open.__doc__
__doc__ effettivamente restituisce è qualunque cosa l'autore del codice inserito nella doc string (la stringa tripla tra virgolette). Niente di più, niente di meno.
Puoi usare __doc__nella funzione, prendi la hog()funzione come esempio: puoi vedere l'uso di hog()come questo:
from skimage.feature import hog
print hog.__doc__
L'output sarà:
Extract Histogram of Oriented Gradients (HOG) for a given image.
Compute a Histogram of Oriented Gradients (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
Also return 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 and Triggs, B, Histograms of Oriented Gradients for
Human Detection, IEEE Computer Society Conference on Computer
Vision and Pattern Recognition 2005 San Diego, CA, USA
Notes
-----
Power law compression, also known as Gamma 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.