JavaScript'te, bir işlevin tanımı yazdırılabilir. Python'da bunu başarmanın bir yolu var mı?
(Sadece etkileşimli modda oynuyorum ve bir modülü open () olmadan okumak istedim. Sadece merak ettim).
JavaScript'te, bir işlevin tanımı yazdırılabilir. Python'da bunu başarmanın bir yolu var mı?
(Sadece etkileşimli modda oynuyorum ve bir modülü open () olmadan okumak istedim. Sadece merak ettim).
Yanıtlar:
Fonksiyonu içe aktarıyorsanız, şunları kullanabilirsiniz 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)
Bu olacak ama görünüşe göre sadece (interaktif istemi içinde tanımlanmış nesnelerin değil) ithal edilen nesneler üzerinde, interaktif isteminde çalışır. Ve tabii ki yalnızca Python kaynak kodunu bulabilirse çalışacaktır (yani yerleşik nesnelerde, C kitaplıklarında, .pyc dosyalarında vb.)
Genel inspectolarak bunun iyi bir cevap olduğunu kabul etsem de, yorumlayıcıda tanımlanan nesnelerin kaynak kodunu alamayacağınız konusunda hemfikir değilim. Eğer kullanırsanız dill.source.getsourcedan dill, onlar interaktif tanımlanmış olsa dahi, işlevleri ve lambdas kaynağını elde edebilirsiniz. Ayrıca, curries içinde tanımlanan bağlı veya bağlantısız sınıf yöntemlerinden ve işlevlerinden kod alabilir ... ancak, bu kodu çevreleyen nesnenin kodu olmadan derleyemeyebilirsiniz.
>>> 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
>>>
__Doc__ anahtar kelimesini kullanabilirsiniz:
#print the class description
print string.__doc__
#print function description
print open.__doc__
__doc__ aslında döner doc dizesinde kod koymak (üçlü alıntı dize) ne olursa olsun yazarıdır. Ne fazla ne eksik.
İşlevde __doc__işlevini kullanabilir, hog()işlevi örnek olarak alabilirsiniz : Bunun hog()gibi kullanımlarını görebilirsiniz :
from skimage.feature import hog
print hog.__doc__
Çıktı şu şekilde olacaktır:
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.