Il python è un linguaggio di scripting e di programmazione ad alto livello, usato molto spesso nell’ambito della computazione numerica e system testing. Esso viene normalmente paragonato a linguaggi come Tcl, Perl, Java, JavaScript, Visual Basic o Scheme. Questo linguaggio è volto alla programmazione ad oggetti è un linguaggio multi-paradigma, che fa della dinamicità, semplicità e flessibilità i suoi principali obiettivi, Python ha una vasta libreria standard, il che lo rende adatto a molti impieghi. Iniziamo però anche a dire che Python è un linguaggio interpretato.
COME LAVORA L’INTERPRETE PYTHON?
Come lavora l’interprete Python per interpretare i codici scritti da noi programmatori? Allora, iniziamo con il dire che Python non è esattamente un linguaggio interpretato ma è un linguaggio pseudo-compilato, perché dico questo? Perché l’interprete Python (ovvero la PVM – Python Virtual Machine) internamente e nascosto al programmatore, prima di eseguire il codice, compila il sorgente in byte code (come in Java). Il byte code cos’è? Semplicemente una rappresentazione a basso livello indipendente dalla piattaforma su cui eseguite il vostro codice .py. Una volta tradotto in byte code tutte le istruzioni all’interno del file python, la PVM esegue il file tradotto (ergo il file con estensione .pyc) in byte code e lo mostra al programmatore. Naturalmente se modichiamo il sorgente, il file .pyc verrà aggiornato, però dopo fatto l’aggiornamento l’interprete Python salterà la fase di compilazione. La compilazione in bytecode è automatica e la PVM non è altro una parte di sistema del Python, infatti i programmatori Python scrivono il codice sorgente e lo mandano in esecuzione senza effettuare tecniche di compilazione. Lo schema è piùttosto semplice perché è suddiviso in SORGENTE → BYTE CODE → ESECUZIONE. Un software scritto Python è possibile trasformarlo in un eseguibile vero e proprio tramite il software Py2exe e PyInstaller (utility sotto Unix e Linux) e in fine c’è freeze (software originale degli editori di Python). Solamente che quando si compila tutto, i dettagli come la PVM e il byte code vengono fusi tutti in un unico file binario congelato (gergo tecnico di un eseguibile python), ciò purtroppo renderà il file eseguibile pesante di dimensioni e la velocità d’esecuzione non cambia, quindi è poco utile fare questo passo.
INIZIARE A LAVORARE DA INTERPRETE INTERATTIVO
Benissimo, ora siamo pronti per iniziare a parlare un po’ del codice di Python e ad iniziare a programmare ma tutto ciò lo faremo da interprete interattivo. Come mai questa scelta? Perché è il modo forse più semplice di imparare a programmare con questo linguaggio. Oltre all’interprete tramite shell (DOS o Linux che sia) esistono anche vari software come IDLE, Command Line(Python), etc… Tutti presenti per utenti Windows nel pacchetto scaricato dal sito web: http://www.python.org/. Il prompt interattivo si lancerà (per utenti Windows da DOS e per utenti Linux da terminale) digitando la parola: python come riportato qui sotto:
gh1r0@gh1r0:~# python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>>
Il risultato mostrato è che python sta aspettando i vostri comandi, come potete saperlo? Semplice, vedete i tre maggiori (>>>) questo è il modo in cui il prompt di python dichiara di essere pronto per ricevere comandi! Se infatti digitiamo un semplice print ‘ciao’ python riporterà sotto ciao e ritornerà con i tre simboli di maggiore. Ma sicuramente vi domandate che cosa offre il prompt interattivo di diverso da un sorgente scritto su un file di testo! Il prompt interattivo viene usato per testare i comandi per la sua capacità di eseguire ed riportare l’output del codice mano a mano che vengono inserite nuove istruzioni. Per il prompt interattivo il comando print è inutile dato che se si digita la variabile l’interprete stampa il risultato, come in questo esempio per i numeri:
>>> var_1 = 32
>>> var_1
32
E in quest’altro per le stringhe alfanumeriche:
>>> saluto = ‘ciao’
>>> saluto
‘ciao’
Come vedete il risultato è immediato, per questo il prompt interattivo è il posto perfetto per il testing delle testing delle istruzioni e dei programmi, perché se ad esempio c’è una funzione che non conoscete aprite l’interprete interattivo e ne vedete il risultato. Per i nuovi utenti del python, se per caso doveste incorrere in un risultato del genere:
>>> for x in ‘spam’:
…
Non dovete preoccuparvi! I tre puntini ‘…’ stanno a significare una funzione composta ovvero per comprendere meglio, questa è una istruzione a multi-riga. Ovvero in questo caso (come avete visto per i linguaggi trattati nel sito) è un blocco del codice e Python inserisce la così detta indentazione, ma questo concetto lo approfondiremo più avanti. Vi voglio comunque dire che per terminare un’istruzione multi-riga dovete solamente premere due volte enter (o invio)! Quando avete un risultato in uscita come questo invece, significa che Python ha riscontrato un errore:
>>> Ghiro
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name ‘Ghiro’ is not defined
Qui infatti l’interprete Python mi sta dicendo che la variabile con il nome Ghiro non è presente nel “programma” o per meglio dire io non ho definito alcuna variabile con il nome Ghiro ;-). Bene ora andiamo a vedere come usare l’interprete con alcuni esempi di script. Prima di introdurre questo concetto voglio dirvi un contro del prompt di Python. Una volta inserite alcune istruzioni se incontriamo un errore bisogna riscrivere tutto ciò che abbiamo scritto precedentemente, poiché l’interprete Python una volta eseguita l’istruzione dimentica tale istruzione! Infatti il codice che scrivete nell’interprete non viene salvato da nessuna parte poiché non c’è un file d’appoggio. Le operazioni come copiare da un file il codice e incollarlo nell’interprete possono essere di poco aiuto, dato il fatto che Python riscontra errori anche sull’indentazione.
Salutiamo Python e facciamoci individuare:
Bene! Siamo finalmente giunti dopo un lungo e interminato tempo di sola teoria (che però fa sempre bene) all’atto di scrivere del codice con le nostre mani! Potete decidere se inserirlo nel prompt Python da shell o in un file di testo, io comunque metterò tutti e due i casi sia file che prompt. Lo script che andremo a vedere lo chiameremo script0x.py, perfetto una volta creato il file inseriremo al suo interno questo codice:
#!/usr/bin/python
# Created by Author (nei miei casi Gh1r0)
import sys # libreria di sistema
print ‘ciao python’ # stampa ciao python
print(sys.platform) # stampa la piattaforma su cui gira il prompt
Ecco a voi il primissimo script di Python, però non sappiamo realmente cosa faccia! Beh ora calmiamoci di essere entusiasti di aver scritto codice Python e iniziamo a comprenderne gli scopi! Iniziamo da #!/usr/bin/env python per gli utenti Linux sarà la directory dove risiede Python! Così da far capire all’interprete che Python è posto in quella determinata directory (ovvero /usr/bin). Mentre il # Created by è un commento! Come detto tantissime volte i commenti sono la parte fondamentale di ogni programma perché permette di rendere leggibile un codice e di ricordare i suoi scopi. Import, questa istruzione caricherà uno dei moduli della libreria sys per usare la funzione sys.platform [vedremo pure nel corso dei nostri studi anche come creare i moduli]. L’istruzione print stampa quello che c’è tra virgolette o ciò che digitiamo infatti un altro esempio di print è print 12 che stamperà il valore 12 oppure print nome_var che stamperà il numero contenuto nella variabile nome_var. Passando all’ultima istruzione di questo script, print stamperà una stringa che identifica la piattaforma sotto cui gira Python. Il nome platform è contenuto nel modulo sys e che ogni volta va a catturarlo dentro tale modulo importato nella riga 3. Per eseguire lo script da prompt interattivo è semplice ma per eseguirlo da file salvato su disco? Semplicemente da shell bisogna digitare: python script0x.py
gh1r0@gh1r0:~/Desktop# python script0x.py
ciao python
linux2
123
Trovate il numero 123 per il seguente motivo:
#!/usr/bin/env python
# Created by Gh1r0
import sys
nome_var = 123
print ‘ciao python’
print(sys.platform)
print nome_var
Diversamente da altri linguaggi Python non ha bisogno di terminatori d’istruzioni. Per oggi questo è tutto, altrimenti troppa carne al fuoco vi confonde ;-).