[successivo] [precedente] [inizio] [fine] [indice generale] [indice analitico] [parte]


Capitolo 2.   Studio dettagliato del precedente esempio

Si procede ora ad analizzare il testo del semplice programma Python visto in precedenza (listato 1.2).

La riga

#!/usr/bin/python
...

come di consueto indica che quanto segue deve essere considerata una successione di comandi da «dare in pasto» all'interprete indicato, in questo caso python ossia l'eseguibile corrispondente a Python.

Le righe successive che inizino con il carattere cancelletto, #, vanno considerati dei commenti ad uso del lettore e vengono ignorate dall'interprete.

La riga

...
import sys
...

serve a importare nel programma quanto contenuto (definizioni di funzioni, variabili, eccetera) nel modulo sys, il quale è parte della libreria standard di Python.

Per accedere alle componenti del modulo si ricorre alla notazione puntata, come si vedrà nel seguito.

La riga

...
def somma(x, y):
...

costituisce l'intestazione di una funzione, mediante la quale si definisce la funzione stessa, in questo caso somma.

Fra parentesi vanno indicati i parametri formali della funzione; l'intestazione termina obbligatoriamente con i due punti (:).

Il blocco

...
  z = x
  for i in range(y):
    z += 1
  return z
...

costituisce il corpo della funzione somma.

Come si può notare l'appartenenza di un blocco al corpo di una funzione è stabilita dall'allineamento delle righe successive: la prima riga del corpo deve rientrare a destra di almeno uno spazio rispetto all'intestazione, e le righe del blocco devono essere allineate con la prima; il corpo della funzione termina con la prima riga che sia allineata con l'intestazione oppure rientri a sinistra rispetto a questa. Questo sistema di rientri costituisce la convenzione mediante cui in Python si raggruppano le righe in blocchi e si indica il controllo di un istruzione su una riga o blocco; in generale lo schema è:

istruzione_che_controlla:
  istruzione_controllata
  istruzione_controllata
  istruzione_controllata
  ...

istruzione_non_controllata

Si noti in particolare la presenza del carattere : nella riga di controllo.

La riga

...
  z = x
...

rappresenta un'istruzione di assegnamento alla variabile locale z.

La riga

...
  for i in range(y):
...

è l'istruzione di controllo di un ciclo enumerativo.

Si tratta di un tipico idioma Python: il costrutto

for variabile in lista:
  ...

indica che durante l'esecuzione del ciclo la variabile assume in successione i valori di una lista, quindi il ciclo ha termine; l'idioma

range(valore)

restituisce una lista di valori da 0 a valore-1.

La riga

...
    z += 1
...

è l'idioma Python che descrive l'incremento unitario di una variabile.

La riga

...
  return z
...

permette alla funzione somma di restituire il valore della variabile locale z al chiamante.

Dalla riga

...
x = int(sys.argv[1])
...

inizia il corpo principale del programma; mediante la notazione sys.argv si accede alla variabile argv definita nel modulo sys; la variabile argv contiene una lista di valori corrispondenti rispettivamente al nome del programma eseguito (sys.argv[0]) e agli argomenti forniti allo stesso sulla linea di comando (sys.argv[1], sys.argv[2], eccetera). Poiché gli argomenti vengono passati al programma sottoforma di stringhe, è necessario convertirli nel caso in cui debbano essere intesi diversamente, per esempio come valori numerici interi; a tal fine si utilizza proprio la notazione

int(valore_non_intero)

la quale restituisce per l'appunto il valore intero corrispondente all'argomento fornito (sempre che ciò sia possibile); il valore ottenuto viene poi assegnato alla variabile globale x. A questo punto il significato della riga successiva dovrebbe risultare evidente.

La riga

...
z = somma(x, y)
...

rappresenta la chiamata della funzione somma precedentemente definita, con parametri x e y, e successivamente l'assegnamento del valore restituito alla funzione alla variabile globale z.

Infine, la riga

...
print x, "+", y, "=", z
...

serve a inviare allo standard output (ossia generalmente lo schermo del terminale) i risultati dell'elaborazione; come si vede, la parola chiave print può essere seguita da più argomenti, variabili o costanti di tipo diverso, separati dal carattere virgola (,).

Un modo alternativo per generare lo stesso output è quello di utilizzare l'operatore di formato (%), la cui sintassi rivela un evidente eredità dal linguaggio C:

print "%d + %d = %d" % (x, y, z)

Per concludere, ecco un esempio di esecuzione del programma Python da riga di comando:

ls -l somma.py[Invio]

-rw-r--r--    1 max2     max2          349 2004-09-19 22:06 somma.py

chmod +x somma.py[Invio]

ls -l somma.py[Invio]

-rwxr-xr-x    1 max2     max2          349 2004-09-19 22:06 somma.py

./somma.py 23 34[Invio]

23 + 34 = 57


Informatica per sopravvivere 2006.02.19 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome studio_dettagliato_del_precedente_esempio.html

[successivo] [precedente] [inizio] [fine] [indice generale] [indice analitico]

Valid ISO-HTML!

CSS validator!