2015-10-11 11 views
21

Non riesco a capire cosa fa il print(__doc__) all'inizio di uno script, ad esempio in this Scikit example.stampa (__ doc__) in script Python 3

ho cercato per Python docstring in google, e sembra __doc__ è utile fornire alcuni documenti, per esempio, le funzioni. Ma non riesco a vedere cosa fa __doc__ nel mezzo di uno script.

risposta

39

sembra __doc__ è utile fornire alcuni documenti, per esempio, funziona

Questo è vero. Oltre alle funzioni, la documentazione può essere fornita anche in moduli. Quindi, se avete un file chiamato mymodule.py come questo:

"""This is the module docstring.""" 

def f(x): 
    """This is the function docstring.""" 
    return 2 * x 

È possibile accedere ai suoi docstrings come questo:

>>> import mymodule 
>>> mymodule.__doc__ 
'This is the module docstring.' 
>>> mymodule.f.__doc__ 
'This is the function docstring.' 

Ora, tornando alla tua domanda: cosa vuol print(__doc__) fare? In poche parole: stampa la docstring del modulo. Se non è stata specificata alcuna docstring, __doc__ assume come valore predefinito None.

+0

Ben spiegato !! – shadow0359

11

Qualsiasi funzione, classe o modulo che inizia con una stringa letterale ha un valore non vuoto __doc__; quella stringa iniziale è presa come stringa della documentazione; sarà impostato su None se nessuna stringa è presente. Vedi lo docstring term definition nel glossario Python.

Quando si scarica questo esempio di script Scikit, vedrete che inizia con una tale stringa:

""" 
================================ 
Recognizing hand-written digits 
================================ 

An example showing how the scikit-learn can be used to recognize images of 
hand-written digits. 

This example is commented in the 
:ref:`tutorial section of the user manual <introduction>`. 

""" 

Il comando print(__doc__) semplicemente ri-utilizza la stringa di documentazione di scrivere al vostro terminale ogni volta che si esegue lo script e qualsiasi altro strumento python (come la funzione interprete interattivo help(), ad esempio) può analizzare questo stesso valore.

+0

Grazie! Non aveva senso per me vedere 'print (__ doc __)' senza vedere la documentazione (che non potevo vedere senza scaricare lo script). – Tanguy