Domande frequenti

Questa sezione cerca di rispondere alle domande più frequenti (FAQ) che vengono poste sul nostro linguaggio. Sono suddivise in diversi macro-argomenti per permettervi di trovare facilmente la risposta desiderata.

1   Informazioni generali

1.1   Cos'è Python?

Python è un linguaggio di programmazione interpretato, interattivo, orientato agli oggetti. Include moduli, eccezioni, tipizzazione dinamica, tipi di dati dinamici di alto livello. Python combina una grande potenza con una sintassi molto chiara. Si interfaccia con bene con chiamate e librerie di sistema, sistemi operativi grafici ed è estendibile in C o C++. È anche utilizzabile come linguaggio di estensione per programmi che hanno bisogno di un'interfaccia di programmazione. Infine Python è portabile: gira su diverse varianti di Unix, su Mac, su Windows 2000 e successivi.

1.2   Cos'è la Python Software Foundation?

La Python Software Foundation (PSF) è una organizzazione no-profit indipendente che detiene i diritti di Python dalla versione 2.1. La missione della PSF è quella di promuovere la tecnologia open source relativa al linguaggio di programmazione Python e di pubblicizzare l'uso di Python. Trovate la home page della PSF a questo indirizzo.

1.4   Per cosa è buono Python?

Python è un linguaggio di programmazione generico di alto livello e può essere applicato a diverse classi di problemi.

Il linguaggio è fornito di un'estesa libreria standard che copre aree come manipolazione di stringhe (espressioni regolari, Unicode, calcolo di differenze tra file), protocolli Internet (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, programmazione CGI), sviluppo software (unit test, logging, profiling, parsing di codice Python) e interfacce a sistemi operativi (chiamate di sistema, file system, socket TCP/IP). Potete dare un'occhiata all'indice della libreria standard per farvi un'idea di cosa sia disponibile.

È anche disponibile una grande varietà di estensioni di terze parti: consultate l'indice dei package per cercare quello che vi interessa.

1.5   Come funziona lo schema di numerazione delle versioni di Python?

Le versioni di Python sono numerate con lo schema A.B.C o A.B. A rappresenta il numero di versione principale ed è incrementato solo per cambiamenti davvero importanti del linguaggio. B indica il numero di versione minore, incrementato solo per aggiunte minori. C'è un micro livello, incrementato solamente per la risoluzione di bug. Potete vedere la PEP 6 per maggiori informazioni sul rilascio dei bugfix.

Non tutte le versioni sono accompagnate dal rilascio di bugfix. Durante lo sviluppo di una versione principale, vengono rilasciate una serie di versioni di sviluppo, chiamate alpha, beta o release candidate. Le alpha rappresentano i primi rilasci e non sono del tutto stabili. Le beta sono versioni molto più stabili, ma hanno la possibilità di vedere introdotti cambiamenti significativi, mentre le release candidate sono versioni congelate che precedono il rilascio ufficiale e vedranno solo cambiamenti per la correzione di eventuali bug.

Tutte queste versioni hanno un suffisso addizionale rappresentato da una lettera ed un numero. In altre parole le alpha saranno denominate "aN", le beta "bN" e le release candidate "rcN". Ognuna delle versioni sono consequenziali una all'altra. Ecco quindi che una versione nasce come alpha, continua come beta e successivamente release candidate prima del rilascio finale.

Per fare un esempio chiarificatore, ripercorriamo la storia della versione 3.6.0:

  • Inizia lo sviluppo della versione 3.6 il 24/05/2015
  • 3.6.0a1 (alpha 1) viene rilasciata il 17/05/2016
  • 3.6.0a2 (alpha 2) viene rilasciata il 13/06/2016
  • 3.6.0a3 (alpha 3) viene rilasciata il 11/07/2016
  • 3.6.0a4 (alpha 4) viene rilasciata il 15/08/2016
  • 3.6.0b1 (beta 1) viene rilasciata il 12/09/2016
  • 3.6.0b2 (beta 2) viene rilasciata il 10/10/2016
  • 3.6.0b3 (beta 3) viene rilasciata il 31/10/2016
  • 3.6.0b4 (beta 4) viene rilasciata il 21/11/2016
  • 3.6.0rc1 (release candidate 1) viene rilasciata il 06/12/2016
  • 3.6.0rc2 (release candidate 2) viene rilasciata il 16/12/2016
  • 3.6.0 final viene rilasciata il 23/12/2016)

Esiste poi un'ulteriore numero di versione che ha un "+" alla fine della numerazione e rappresenta di fatto un incremento alla successiva versione (minore).

Potete guardare la documentazione di sys.version, sys.hexversion e sys.version_info per avere maggiori dettagli.

1.6   Dove trovo i sorgenti di Python?

I sorgenti della versione più recente di Python sono disponibili su Python.org, all'indirizzo https://www.python.org/downloads/. I sorgenti in fase di sviluppo possono essere ottenuti all'indirizzo https://github.com/python/cpython/

I sorgenti sono distribuiti in file gzipped/tar e contengono il codice C completo, la documentazione formattata con Sphinx, la libreria standard, gli esempi e altri programmi utili liberamente distribuibili. I sorgenti possono essere immediatamente compilati ed eseguiti sulla maggior parte delle piattaforme UNIX.

Potete consultare la documentazione per gli sviluppatori per ulteriori istruzioni su come scaricare e compilare i sorgenti.

1.7   Posso ottenere la documentazione ufficiale?

La documentazione ufficiale della versione stabile è disponibile sul sito ufficiale, Python.org, consultabile all'indirizzo https://docs.python.org/3/. La documentazione è disponibile al download nei formati PDF, testo ed HTML all'indirizzo https://docs.python.org/3/download.html.

La documentazione è scritta in reStructuredText e trasformata con strumenti di Sphinx. Il sorgente reStructuredText per la documentazione fa parte della distribuzione dei sorgenti Python.

1.8   Non ho mai programmato prima! C'è un tutorial su Python?

Ci sono diversi tutorial e libri disponibili. La documentazione standard include Il Tutorial Python.

Potete consultare la guida per i principianti per informazioni su come iniziare a programmare.

1.9   Dite la verità, Python è adatto per i principianti?

La risposta è assolutamente sì, e per maggiori informazioni abbiamo creato una sezione dedicata a questo argomento.

Ma non credeteci sulla parola, provate e non ve ne pentirete.

1.10   Ci sono mailing list o newsgroup su Python?

Se volete entrare in contatto con altri pythonisti in Italia sono disponibili una mailing list ed un newsgroup (it.comp.lang.python, accessibile anche attraverso Google Groups).

Sono posti amichevoli e troverete risposta alle vostre domande.

1.11   Esistono altri modi per restare in contatto?

Esistono altre forme di comunicazione tra i partecipanti della community italiana, alcuni estremamente immediati per via del media utilizzato. Ti consigliamo questa pagina dove troverai i riferimenti alle diverse risorse disponibili.

1.12   Ci sono libri su Python? Ed in italiano?

Esistono molti libri sul nostro amato linguaggio e seppur il numero in lingua inglese sia sicuramente predominante, ne esistono anche in lingua italiana ed anzi il loro numero è in costante aumento. Potete consultare questa sezione del nostro sito per avere una lista, ancorché parziale, in continuo aggiornamento.

1.13   Come mai Python è stato chiamato così?

Contrariamente a quello che molti pensano, il nome non è stato preso dalla razza di serpenti, ma dallo spettacolo della BBC degli anni settanta, chiamato "Monty Python's Flying Circus" creato ed interpretato dai Monty Python. Guido Van Rossum, creatore del linguaggio, cercava un nome che fosse corto e facile da ricordare, unico e un po' misterioso. Python gli sembrò la scelta migliore.

2   Qualche informazione sull'utilizzo di Python

2.1   Quanto è stabile Python?

Molto stabile. Le nuove versioni stabili vengono rilasciate da un minimo di 6 ad un massimo di 18 mesi l'una dall'altra fin dal 1991, anno d'uscita della prima versione pubblica. Attualmente intercorrono circa 18 mesi tra una versione principale e l'altra.

All'interno di questo periodo ci sono rilasci più frequenti che risolvono alcuni problemi minori.

2.2   Quante persone usano Python?

Non è facile dare una risposta certa, probabilmente un numero intorno al milione.

Python è disponibile per essere scaricato e ridistribuito liberamente, non esistono dati di vendita, ed è disponibile su differenti siti ed è incluso in molte distribuzioni Linux.

Quindi, anche se non è possibile fornirvi dati certi, sappiate che la comunità è molto attiva e l'Italia non fa eccezione in questo.

2.3   Quali significanti progetti sono realizzati in Python?

Sono moltissimi i casi di utilizzo e tanti porgetti sono stati realizzati proprio utilizzando Python. Le storie di successo nel suo utilizzo si sprecano, anche in Italia (mandateci la vostra esperienza).

Sono tantissimi coloro che usano Python, comprese realtà come Google (YouTube), Yahoo, Lucasfilm, Dropbox, Evernote, Atlassian, General Elettric, Lego, BuzzFeed, NASA, IBM, Mozilla, Instagram, Reddit, Twitter e molti altri.

2.4   Quali nuovi sviluppi sono attesi per Python in futuro?

Gli sviluppi futuri sono trattati nelle Proposte di Miglioramento di Python, in inglese, Python Enhancement Proposals (PEPs). Le PEPs sono di fatto la strada sulla quale viene intrapreso il cammino dello sviluppo.

3   Dubbi sulla scrittura o sulla comprensione del codice

3.1   Cos'è l'indentazione?

L'indentazione altro non è che un intelligente sistema che attraverso spazi o tab raggruppa blocchi di codice sotto l'istruzione logica dalla quale dipendono, senza l'utilizzo di parentesi o parole chiave. Facciamo un esempio pratico:

if a > b:
print("{} è maggiore di {}".format(a,b))

La seconda riga del nostro mini script fa riferimento all'istruzione if precedente. Se omettessimo la spaziatura, otterremmo un errore IndentationError: expected an indented block.

3.2   Cos'è la console interattiva di Python?

La console interattiva di Python è uno strumento molto potente e flessibile che vi permette di eseguire codice direttamente digitandolo in un ambiente protetto. Una volta installato Python sul vostro sistema (se non già presente) ed invocando l'interprete da una console:

python

si aprirà la console interattiva che vi saluterà più e meno in questo modo (variabile a seconda della piattaforma in cui vi trovate):

Python 3.6.2 (default, Jul 20 2017, 08:43:29)

[GCC 4.9.4] on linux

Type "help", "copyright", "credits" or "license" for more information.

Questo vi permetterà di scrivere direttamente codice. I tre simboli di maggiore ('>>>') stanno ad indicare che vi trovate proprio all'interno della console interattiva e la riga successiva priva del triplo segno di maggiore, indica la risposta a quanto avete digitato:

>>> print("Hello Word")
Hello Word

Per l'indentazione la modalità interattiva vi proporrà tre punti ('...') per identificare la dipendenza dall'istruzione soprastante:

>>> Gundam = 1
>>> if Gundam:
...     print("Nessuno ce la fa contro Gundam")
...
Nessuno ce la fa contro Gundam

I tre segni di maggiore ('>>>') e i tre punti ('...') non vanno mai aggiunti quando scrivete codice, sia che siate in modalità interattiva, ci penserà lei a proporli, o meno.

3.3   Come mai i calcoli a virgola mobile sono così imprecisi?

Facciamo subito un esempio che potrebbe sorprendervi:

>>> 1.2 - 1.0
0.19999999999999996

State pensando che sia un bug? No, non lo è. Questo a dire il vero non ha molto a che fare con Python, ma maggiormente con la piattaforma sulla quale vi trovate che gestisce i numeri a virgola mobile (float). Il valore di un oggetto float viene memorizzato con una precisione fissa (in genere 53 bit) e Python per farlo utilizza le operazioni di C, che a loro volta si basano sull'implementazione hardware nel processore che esegue le operazioni a virgola mobile. Ciò significa che, per quanto riguarda le operazioni a virgola mobile, Python si comporta come molti altri linguaggi tra cui C e Java.

Molti numeri che possono essere scritti facilmente nella forma decimale, non possono essere espressi esattamente in virgola mobile binaria. Ad esempio:

x = 1.2

il valore registrato di x è una (buona) approssimazione del valore decimale 1.2, ma non è esattamente uguale. L'esempio riportato sarà del valore sarà:

1.0011001100110011001100110011001100110011001100110011 (binary)

che è esattamente:

1.1999999999999999555910790149937383830547332763671875 (decimal)

La precisione tipica a 53 bit fornisce a Python numeri a virgola mobile con 15/16 decimali di precisione.

Per un approfondimento vi rimandiamo a questa sezione sul sito ufficiale.