SlideShare a Scribd company logo
1 of 15
Download to read offline
ESEMPI:
                                                       (Cartella basic)
                                Introduzione         doc_funzione1.py
                                                      doc_modulo1.py

   A differenza del Perl, in Python non esiste un
     formato apposito per la marcatura della
     documentazione
   Il runtime fornisce i seguenti meccanismi:
         stringhe multilinea
         attributi privati di oggetti per la memorizzazione
           di documentazione ad essi relativa
   Strumenti esterni:
         generazione di documentazione in stile Javadoc



Linguaggi dinamici – A.A. 2009/2010
                                                                      2
ESEMPI:
                                                     doc_funzione2.py
                        Stringhe multilinea           doc_modulo2.py
                                              doc_funzione_ufficiale.py

   Una stringa contenuta fra due coppie di tri-
     apici (“””) è considerata multi-linea
         Non è necessario effettuare l'escape del
           carattere RETURN al termine di ogni riga
“””
Prova di documentazione.
                                                NB: non è
Questo testo si espande su più                 presente il
righe.                                         carattere di
                                                 escape 
”””


Linguaggi dinamici – A.A. 2009/2010
                                                                      3
ESEMPI:
                                             usage.py
 Stampa dello usage di un programma
Il messaggio di uso di un programma (usage),
  stampato in seguito ad un erroneo ingresso
  oppure in seguito all'opzione di help (-h), è
  solitamente implementato tramite una stringa
  multi-linea
print “””Usage: programma arg1 [arg2]
arg1: descrizione argomento 1
arg2: descrizione argomento 2
“””



Linguaggi dinamici – A.A. 2009/2010
                                                    4
L'attributo privato __doc__
   In Python, qualunque entità (variabile,
     funzione, istanza di oggetto) può essere vista
     come un oggetto
   A ciascun oggetto è associato un attributo
     privato, __doc__
         Tale attributo contiene una descrizione
           documentale dell'oggetto
         La descrizione può essere fornita tramite una
           stringa oppure tramite una stringa multilinea
         __doc__ è un attributo in sola lettura; non può
           essere sovrascritto, solo impostato inizialmente

Linguaggi dinamici – A.A. 2009/2010
                                                              5
L'attributo privato __doc__
   L'impostazione dell'attributo privato __doc__
     avviene tramite l'inserimento di stringhe
     normali o multilinea (dette docstring) in
     posizioni strategiche del codice
   Le posizioni strategiche sono le seguenti
         Modulo: una stringa subito al di sotto della
           shebang #!
         Funzione: una stringa subito al di sotto della
           definizione di funzione




Linguaggi dinamici – A.A. 2009/2010
                                                            6
ESEMPI:
                                                Animale.py
           Produzione di documentazione
   Per convenzione, la documentazione di una
     funzione è conseguita tramite l'uso di una
     stringa multilinea
   La prima linea è una descrizione breve dello
     scopo della funzione (cosa fa, non come lo fa)
         Obbligatoria
   Segue una riga vuota
   Segue un paragrafo che spiega in dettaglio:
         significato dei parametri
         risultato atteso
         eventuali effetti collaterali
Linguaggi dinamici – A.A. 2009/2010
                                                         7
ESEMPI:
                                                      Cartella sphinx
                Strumenti esterni: sphinx
   Una libreria esterna di ausilio alla produzione
     di documentazione è sphinx
         http://sphinx.pocoo.org/
           sudo easy-install sphinx
   Sphinx introduce il meccanismo dei tag (tipico
     di perldoc e javadoc) nel codice Python
   Formato di markup: reST (reStructuredText)
         http://docutils.sourceforge.net/rst.html




Linguaggi dinamici – A.A. 2009/2010
                                                                    8
Generazione di documentazione
    Si utilizza il comando sphinx-quickstart
         http://matplotlib.sourceforge.net/sampledoc/
           getting_started.html
    Viene generato automaticamente un template
      per la documentazione e i makefile per
      windows e unix/linux/osx
    Si utilizza il comando
      make target
      per produrre la documentazione in uno dei
      formati supportati.

Linguaggi dinamici – A.A. 2009/2010
                                                          9
Generazione di documentazione
   Possibili valori di target:
        html            to make standalone HTML files
        dirhtml         to make HTML files named index.html in directories
        pickle          to make pickle files
        json            to make JSON files
        htmlhelp        to make HTML files and a HTML help project
        qthelp          to make HTML files and a qthelp project
        latex           to make LaTeX files
        changes         to make an overview of all changed/added/
                          deprecated items
        linkcheck       to check all external links for integrity
        doctest         to run all doctests embedded in the documentation
                          (if enabled)



Linguaggi dinamici – A.A. 2009/2010
                                                                               10
Generazione di documentazione
    Il file index.rst è il file master, è possibile
      modificarlo per inserire i vari contenuti, ad es:
      .. toctree::
         :maxdepth: 2
         contents
      (Inserisce nel documento il file contents.rst)




Linguaggi dinamici – A.A. 2009/2010
                                                          11
Generazione di documentazione
   Dentro il file contents.rst:
      MioModulo
      =========
      .. automodule:: MioModulo
         :members:
     (crea una sezione “MioModulo” e genera
     automaticamente la documentazione del
     modulo “MioModulo”)

   Le opzioni immutabili possono essere scritte
     in un file di configurazione conf.py

Linguaggi dinamici – A.A. 2009/2010
                                                    12
Tag di descrizione
   Ciascun tag va inserito all'interno di una
     normale docstring
   Tag di descrizione disponibili
         Paragrafi di testo
         Elenchi numerati e non
         Blocchi letterali (verbatim)
         Inline markup (italic, bold, codice sorgente, …)
         Parametri (tipo, descrizione)
         Valori di ritorno
         …


Linguaggi dinamici – A.A. 2009/2010
                                                              13
Tag di descrizione
   Paragrafo di testo
         Una o più righe di testo, allineate a sinistra
   Elenco numerato
         Elenco di righe, ciascuna delle quali inizia con
           un bullet numerico (1., 2., 1.2.8)
   Elenco non numerato
         Elenco di righe, ciascuna delle quali inizia con
           un bullet non numerico (-)




Linguaggi dinamici – A.A. 2009/2010
                                                              14
Tag di descrizione
   Sezione di un libro
         Una riga contenente il titolo della sezione,
           seguita da una riga di caratteri speciali a
           sottolineare il titolo stesso (lunga almeno
           quanto il titolo)
         Sezione principale: carattere =
         Sottosezione: carattere -
         Sotto-sottosezione: carattere ^
         Paragrafi: carattere “



Linguaggi dinamici – A.A. 2009/2010
                                                          15

More Related Content

What's hot

Pe a3 perl-metaprogramming
Pe a3 perl-metaprogrammingPe a3 perl-metaprogramming
Pe a3 perl-metaprogrammingMajong DevJfu
 
Pe t2 perl-caratteristiche
Pe t2 perl-caratteristichePe t2 perl-caratteristiche
Pe t2 perl-caratteristicheMajong DevJfu
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#Marco Parenzan
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéEdmondo Porcu
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - TheoryNaLUG
 
Corso Iphone in 48h
Corso Iphone in 48hCorso Iphone in 48h
Corso Iphone in 48hFLT.lab
 
MS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partIMS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partIMobileSchool
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 
Spyppolare o non spyppolare
Spyppolare o non spyppolareSpyppolare o non spyppolare
Spyppolare o non spyppolarePyCon Italia
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java BaseK-Tech Formazione
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio cughetta
 

What's hot (20)

2006 Py04 avanzato
2006 Py04 avanzato2006 Py04 avanzato
2006 Py04 avanzato
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Pe a3 perl-metaprogramming
Pe a3 perl-metaprogrammingPe a3 perl-metaprogramming
Pe a3 perl-metaprogramming
 
2006 Py03 intermedio
2006 Py03 intermedio2006 Py03 intermedio
2006 Py03 intermedio
 
Pe t1 perl-intro
Pe t1 perl-introPe t1 perl-intro
Pe t1 perl-intro
 
Pe t2 perl-caratteristiche
Pe t2 perl-caratteristichePe t2 perl-caratteristiche
Pe t2 perl-caratteristiche
 
2006 Py01 intro
2006 Py01 intro2006 Py01 intro
2006 Py01 intro
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#
 
Pe t4 perl-oggetti
Pe t4 perl-oggettiPe t4 perl-oggetti
Pe t4 perl-oggetti
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perché
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - Theory
 
T3 esempio runtime
T3 esempio runtimeT3 esempio runtime
T3 esempio runtime
 
Corso Iphone in 48h
Corso Iphone in 48hCorso Iphone in 48h
Corso Iphone in 48h
 
MS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partIMS_corso base iOS iPhone_partI
MS_corso base iOS iPhone_partI
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
Spyppolare o non spyppolare
Spyppolare o non spyppolareSpyppolare o non spyppolare
Spyppolare o non spyppolare
 
Bash programming
Bash programmingBash programming
Bash programming
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 

Viewers also liked

Viewers also liked (15)

Py a1 python-unit_testing
Py a1 python-unit_testingPy a1 python-unit_testing
Py a1 python-unit_testing
 
Pycon
PyconPycon
Pycon
 
UE week 2
UE week 2UE week 2
UE week 2
 
Pe a1 perl-unit_testing
Pe a1 perl-unit_testingPe a1 perl-unit_testing
Pe a1 perl-unit_testing
 
T4 tipizzazione
T4 tipizzazioneT4 tipizzazione
T4 tipizzazione
 
T8 supporti
T8 supportiT8 supporti
T8 supporti
 
T2 architettura
T2 architetturaT2 architettura
T2 architettura
 
T5 memoria
T5 memoriaT5 memoria
T5 memoria
 
T1 introduzione
T1 introduzioneT1 introduzione
T1 introduzione
 
T6 codice
T6 codiceT6 codice
T6 codice
 
Corso Python Django
Corso Python DjangoCorso Python Django
Corso Python Django
 
Py a5 python-text
Py a5 python-textPy a5 python-text
Py a5 python-text
 
Pe a2 perl-documentazione
Pe a2 perl-documentazionePe a2 perl-documentazione
Pe a2 perl-documentazione
 
9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
Penetration Testing con Python - Network Sniffer
Penetration Testing con Python - Network SnifferPenetration Testing con Python - Network Sniffer
Penetration Testing con Python - Network Sniffer
 

Similar to Py a2 python-documentazione

Similar to Py a2 python-documentazione (20)

Open web programming
Open web programmingOpen web programming
Open web programming
 
Open xml
Open xmlOpen xml
Open xml
 
Programming iOS lezione 3
Programming iOS lezione 3Programming iOS lezione 3
Programming iOS lezione 3
 
11 I File
11   I File11   I File
11 I File
 
Presentazione Tesi Marco Ventura
Presentazione Tesi Marco VenturaPresentazione Tesi Marco Ventura
Presentazione Tesi Marco Ventura
 
Xml annessi e connessi
Xml annessi e connessiXml annessi e connessi
Xml annessi e connessi
 
5 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/185 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/18
 
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
 
Epub - Corso CIERRE Edizioni
Epub - Corso CIERRE EdizioniEpub - Corso CIERRE Edizioni
Epub - Corso CIERRE Edizioni
 
Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19
 
5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)
 
Presentazione java7
Presentazione java7Presentazione java7
Presentazione java7
 
Java lezione 6
Java lezione 6Java lezione 6
Java lezione 6
 
Xml Xslt
Xml  XsltXml  Xslt
Xml Xslt
 
Docdigitali 11mag09
Docdigitali 11mag09Docdigitali 11mag09
Docdigitali 11mag09
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Basi Di Dati 01
Basi Di Dati 01Basi Di Dati 01
Basi Di Dati 01
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
S354 php-5.x-e-my sql-5.x
S354 php-5.x-e-my sql-5.xS354 php-5.x-e-my sql-5.x
S354 php-5.x-e-my sql-5.x
 

More from Majong DevJfu

8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptationMajong DevJfu
 

More from Majong DevJfu (20)

8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptation
 

Recently uploaded

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 

Recently uploaded (9)

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 

Py a2 python-documentazione

  • 1.
  • 2. ESEMPI: (Cartella basic) Introduzione doc_funzione1.py doc_modulo1.py A differenza del Perl, in Python non esiste un formato apposito per la marcatura della documentazione Il runtime fornisce i seguenti meccanismi: stringhe multilinea attributi privati di oggetti per la memorizzazione di documentazione ad essi relativa Strumenti esterni: generazione di documentazione in stile Javadoc Linguaggi dinamici – A.A. 2009/2010 2
  • 3. ESEMPI: doc_funzione2.py Stringhe multilinea doc_modulo2.py doc_funzione_ufficiale.py Una stringa contenuta fra due coppie di tri- apici (“””) è considerata multi-linea Non è necessario effettuare l'escape del carattere RETURN al termine di ogni riga “”” Prova di documentazione. NB: non è Questo testo si espande su più presente il righe. carattere di escape ””” Linguaggi dinamici – A.A. 2009/2010 3
  • 4. ESEMPI: usage.py Stampa dello usage di un programma Il messaggio di uso di un programma (usage), stampato in seguito ad un erroneo ingresso oppure in seguito all'opzione di help (-h), è solitamente implementato tramite una stringa multi-linea print “””Usage: programma arg1 [arg2] arg1: descrizione argomento 1 arg2: descrizione argomento 2 “”” Linguaggi dinamici – A.A. 2009/2010 4
  • 5. L'attributo privato __doc__ In Python, qualunque entità (variabile, funzione, istanza di oggetto) può essere vista come un oggetto A ciascun oggetto è associato un attributo privato, __doc__ Tale attributo contiene una descrizione documentale dell'oggetto La descrizione può essere fornita tramite una stringa oppure tramite una stringa multilinea __doc__ è un attributo in sola lettura; non può essere sovrascritto, solo impostato inizialmente Linguaggi dinamici – A.A. 2009/2010 5
  • 6. L'attributo privato __doc__ L'impostazione dell'attributo privato __doc__ avviene tramite l'inserimento di stringhe normali o multilinea (dette docstring) in posizioni strategiche del codice Le posizioni strategiche sono le seguenti Modulo: una stringa subito al di sotto della shebang #! Funzione: una stringa subito al di sotto della definizione di funzione Linguaggi dinamici – A.A. 2009/2010 6
  • 7. ESEMPI: Animale.py Produzione di documentazione Per convenzione, la documentazione di una funzione è conseguita tramite l'uso di una stringa multilinea La prima linea è una descrizione breve dello scopo della funzione (cosa fa, non come lo fa) Obbligatoria Segue una riga vuota Segue un paragrafo che spiega in dettaglio: significato dei parametri risultato atteso eventuali effetti collaterali Linguaggi dinamici – A.A. 2009/2010 7
  • 8. ESEMPI: Cartella sphinx Strumenti esterni: sphinx Una libreria esterna di ausilio alla produzione di documentazione è sphinx http://sphinx.pocoo.org/ sudo easy-install sphinx Sphinx introduce il meccanismo dei tag (tipico di perldoc e javadoc) nel codice Python Formato di markup: reST (reStructuredText) http://docutils.sourceforge.net/rst.html Linguaggi dinamici – A.A. 2009/2010 8
  • 9. Generazione di documentazione Si utilizza il comando sphinx-quickstart http://matplotlib.sourceforge.net/sampledoc/ getting_started.html Viene generato automaticamente un template per la documentazione e i makefile per windows e unix/linux/osx Si utilizza il comando make target per produrre la documentazione in uno dei formati supportati. Linguaggi dinamici – A.A. 2009/2010 9
  • 10. Generazione di documentazione Possibili valori di target: html to make standalone HTML files dirhtml to make HTML files named index.html in directories pickle to make pickle files json to make JSON files htmlhelp to make HTML files and a HTML help project qthelp to make HTML files and a qthelp project latex to make LaTeX files changes to make an overview of all changed/added/ deprecated items linkcheck to check all external links for integrity doctest to run all doctests embedded in the documentation (if enabled) Linguaggi dinamici – A.A. 2009/2010 10
  • 11. Generazione di documentazione Il file index.rst è il file master, è possibile modificarlo per inserire i vari contenuti, ad es: .. toctree:: :maxdepth: 2 contents (Inserisce nel documento il file contents.rst) Linguaggi dinamici – A.A. 2009/2010 11
  • 12. Generazione di documentazione Dentro il file contents.rst: MioModulo ========= .. automodule:: MioModulo :members: (crea una sezione “MioModulo” e genera automaticamente la documentazione del modulo “MioModulo”) Le opzioni immutabili possono essere scritte in un file di configurazione conf.py Linguaggi dinamici – A.A. 2009/2010 12
  • 13. Tag di descrizione Ciascun tag va inserito all'interno di una normale docstring Tag di descrizione disponibili Paragrafi di testo Elenchi numerati e non Blocchi letterali (verbatim) Inline markup (italic, bold, codice sorgente, …) Parametri (tipo, descrizione) Valori di ritorno … Linguaggi dinamici – A.A. 2009/2010 13
  • 14. Tag di descrizione Paragrafo di testo Una o più righe di testo, allineate a sinistra Elenco numerato Elenco di righe, ciascuna delle quali inizia con un bullet numerico (1., 2., 1.2.8) Elenco non numerato Elenco di righe, ciascuna delle quali inizia con un bullet non numerico (-) Linguaggi dinamici – A.A. 2009/2010 14
  • 15. Tag di descrizione Sezione di un libro Una riga contenente il titolo della sezione, seguita da una riga di caratteri speciali a sottolineare il titolo stesso (lunga almeno quanto il titolo) Sezione principale: carattere = Sottosezione: carattere - Sotto-sottosezione: carattere ^ Paragrafi: carattere “ Linguaggi dinamici – A.A. 2009/2010 15