Python: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ninja (discussione | contributi)
m modificato link a Stringa (informatica)
Iron Bishop (discussione | contributi)
m intestazioni
Riga 2:
 
== Filosofia ==
 
Python è un linguaggio multi-paradigma. Infatti permette in modo agevole di scrivere programmi seguendo il [[paradigma object oriented]], oppure la [[programmazione strutturata]], oppure la [[programmazione funzionale]]. Il controllo dei tipi viene fatto a [[runtime]] ([[dynamic typing]]) e usa un [[garbage collector]] per la gestione automatica della memoria.
 
Riga 8 ⟶ 7:
 
== Tipi di dati e strutture ==
 
Python ha un gran numero di [[tipi base]]. Oltre ai [[tipi interi]] e [[floating point]] classici, supporta trasparentemente numeri interi arbitrariamente grandi e numeri complessi. Dalla versione 2.4 sono disponibili anche i numeri decimali ([[decimal]]), ovvero numeri con la virgola a precisione illimitata, come quelli disponibili in Rexx o in Cobol, che non soffrono di problemi di arrotondamento e stabilità tipici dei numeri floating point classici.
 
Riga 17 ⟶ 15:
In Python c'è un moderato controllo dei tipi a runtime. Si ha conversione implicita per i tipi numerici, per cui si può ad esempio moltiplicare un numero complesso per un intero, ma non c'è ad esempio conversione implicita tra numeri e stringhe, per cui un numero è un argomento non valido per le operazioni su stringa.
 
==== Contenitori standard ====
 
Python ha una serie di tipi contenitori come ad esempio [[liste]], [[tuple]] e [[dizionari]]. Liste, tuple e stringhe sono ''sequenze'' e condividono la maggior parte dei metodi: si può iterare sui caratteri di una stringa con la stessa facilità con cui lo si può fare sugli elementi di una lista. Le liste sono array estendibili, invece le tuple sono array immutabili di lunghezza prefissata.
 
Altri contenitori di grande utilità sono i ''dizionari'', conosciuti in altri contesti con il nome di [[hash table]] oppure [[array associativi]]. Come chiavi dei dizionari possono essere usati solo oggetti immutabili, in modo che in ogni caso sia preservata la consistenza, invece come valori associati alla chiave vanno bene oggetti arbitrari.
 
==== Organizzazione ad oggetti ====
 
Il sistema dei tipi Python è ben integrato con il sistema delle classi. Anche se i tipi base non sono precisamente classi, una classe può ereditare da essi. In questo modo è possibile estendere stringhe, dizionari, ... o perfino gli interi. L'ereditarietà multipla è supportata.
 
Vengono supportate anche funzionalità estensive di introspezione sui tipi e sulle classi. I tipi e le classi sono a loro volta oggetti che possono essere esplorati e confrontati. Gli attributi sono gestiti in un dizionario.
 
== Sintassi ==
 
Python è stato progettato in modo da essere altamente leggibile. Visivamente si presenta in modo molto semplice e ha pochi costrutti sintattici rispetto a molti altri linguaggi strutturati come [[C]], [[Perl]] o [[Pascal (linguaggio)|Pascal]].
 
Per esempio, Python ha solo due forme di ciclo -- <TT>for</TT>, che cicla sugli elementi di una lista o su di un iteratore (come il <TT>foreach</TT> del Perl); e <TT>while</TT>, che cicla fin tanto che l'espressione booleana indicata risulta vera. In sostanza manca dei cicli in stile C <TT>for</TT>, <TT>do</TT>...<TT>while</TT>, oppure di un <TT>until</TT> in stile Perl, ma tutti questi naturalmente possono essere espressi con dei semplici equivalenti. Allo stesso modo ha solamente il costrutto <TT>if</TT>...<TT>elif</TT>...<TT>else</TT> per le scelte condizionate -- niente <TT>switch</TT> oppure <TT>goto</TT>.
 
==== Uso degli spazi ====
 
Una cosa inusuale del Python è il metodo che usa per delimitare i blocchi di programma, che lo rende unico fra tutti i linguaggi più diffusi.
 
Riga 62 ⟶ 56:
All'inizio questo modo di indicare i blocchi può confondere le idee a chi viene da altri linguaggi, ma poi si rivela molto vantaggioso, perché risulta molto conciso e obbliga a scrivere sorgenti indentati correttamente, aumentando alquanto la leggibilità del codice quando passa di mano in mano.
 
==== Programmazione funzionale ====
 
==== [[Hello world|Hello, world!]] ====
Il seguente esempio stampa il testo "[[Hello world|Hello world]]".
 
print "Hello World"
 
Come detto sopra, un altro punto di forza del Python è la disponibilità di elementi che facilitano la [[programmazione funzionale]]. Come ci si può aspettare, questo rende ancora più comodo operare con liste o altri tipi contenitore. Uno di questi costrutti è stato preso dal linguaggio funzionale [[Haskell]] e consente il "riempimento" di una lista, come possiamo vedere nel seguente esempio in cui vengono calcolate le prime cinque potenze di due:
 
Riga 83 ⟶ 71:
return temp
 
==== Gestione delle eccezioni ====
Python supporta e usa estensivamente la [[gestione delle eccezioni]] come un mezzo per controllare la presenza di eventuali condizioni di errore. Addirittura è possibile intercettare l'eccezione generata da un errore di sintassi (syntax error)!
 
Riga 90 ⟶ 78:
Il modo di fare frequente consiste, invece che fare controlli preventivi, nell'eseguire direttamente l'azione desiderata e catturare invece le eventuali eccezioni che si verificassero.
 
== Libreria standard ==
 
Python ha una vasta [[libreria standard]], il che lo rende adatto a molti impieghi.
Riga 97 ⟶ 85:
La libreria standard è uno dei punti forti di Python. Essa infatti compatibile con tutte le piattaforme, ad eccezione di poche funzioni, segnalate chiaramente nella documentazione come specifiche di una piattaforma particolare. Grazie a questo generalmente anche programmi Python molto grossi possono funzionare su Linux, Mac, Windows e altre piattaforme senza dover essere modificati.
 
== Altre caratteristiche ==
Come il Lisp e a differenza del Perl, l'interprete Python supporta anche un modo d'uso interattivo attraverso il quale è possibile inserire codice direttamente da un terminale, vedendo immediatamente il risultato. Questo è un bel vantaggio per chi sta imparando il linguaggio, ma anche per gli sviluppatori esperti: brevi tratti di codice possono essere provati in modo interattivo prima di essere integrati nel programma principale. Python dispone anche di un framework per lo [[unit testing]] che permette di creare serie esaustive di test.
 
Riga 105 ⟶ 93:
* Esistente anche una implementazione Java del linguaggio Python che si chiama [[Jython]].
 
==Esempio di programma==
== Collegamenti esterni ==
==== [[Hello world|Hello, world!]] ====
Il seguente esempio stampa il testo "[[Hello world|Hello world]]".
print "Hello World"
 
== Collegamenti esterni ==
* [http://www.python.org/ http://www.python.org/] -- La homepage
* [http://www.python.org/cgi-bin/moinmoin http://www.python.org/cgi-bin/moinmoin] -- Python Wiki