Introduzione a Python

Di seguito farò una breve introduzione al linguaggio, il post è indirizzato a chi è alle prime armi con Python e non è assolutamente adatto a quelli che il linguaggio lo conoscono già bene!

Settimanalmente aggiungerò dei capitoletti a questa semplice guida, quindi seguite il blog e sarete in costante aggiornamento!
NB: Gli script cambiano leggermente in base all'OS in uso.

Buona lettura!

Cos'è Python?

Python è un linguaggio di programmazione potente e di facile apprendimento. Utilizza efficienti strutture dati di alto livello e un semplice ma efficace approccio alla programmazione orientata agli oggetti. L'elegante sintassi di Python e la tipizzazione dinamica, unite alla sua natura di linguaggio interpretato, lo rendono ideale per lo scripting e lo sviluppo rapido di applicazioni in molte aree diverse e sulla maggior parte delle piattaforme.

Perchè Python

Python gira su Windows, Linux/Unix, Mac OS X, OS/2, Amiga, palmari Palm e cellulari Nokia; è stato anche portato sulle macchine virtuali Java e .NET.
Python è distribuito con licenza Open-Source approvata dalla OSI: il suo utilizzo è gratuito e libero anche per prodotti commerciali.

Invocare l'interprete

Per invocare l'interprete è sufficiente digitare da console: python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

Script Python eseguibili

Sui sistemi UNIX in stile BSD, gli script Python possono essere resi direttamente eseguibili, come per gli script di shell, ponendo all’inizio dello script la riga #! /usr/bin/env python (dato per scontato che l’interprete si trovi nel PATH dell’utente) e dando al file il permesso di esecuzione. I caratteri "#!" devono essere i primi due del file. Su qualche piattaforma, questa prima riga terminerà in stile UNIX (‘\n’), non in Mac OS (‘\r’) o in Windows (‘\r\n’). Si noti che il carattere hash "#" (NdT: in italiano cancelletto, diesis) viene usato in Python per iniziare un commento). Lo script può essere reso eseguibile, modificandone i permessi, usando il comando chmod: $ chmod +x myscript.py

I commenti in python

In Python i commenti iniziano con il carattere "hash", "#" e continuano fino alla fine della riga. Un commento può comparire all’inizio di una riga, dopo degli spazi bianchi o dopo del codice, ma non dentro una stringa costante. Un carattere hash dentro una stringa costante è solamente un carattere hash.
Ad esempio:
intero = 1 # questo è un intero
stringa = "ciao a tutti"    # stampa un commento
pint stringa                # su piu' righe

Passaggio di argomenti all'inteprete

Gli argomenti addizionali sono passati allo script tramite la variabile sys.argv, che è una lista di stringhe.
print "Gli argomenti sono:\n"
for arg in sys.argv:
 print arg
Usiamo il programma così: python test1.py -argomento1 -argomento2 -ecc che restituirà il seguente output
Gli argomenti sono:

test1.py
-argomento1
-argomento2
-ecc
Come potete vedere, tutti i valori vengono passati da riga di comando. Per programmi semplici che prendono un solo argomento e non hanno flag, potete semplicemente usare sys.argv[1] per leggere l'argomento. Per programmi più complessi invece dovete usare: getopt.

Semplice "cat" in C++ e Python

Voglio mostrarvi come python semplifichi molto la lettura di stringhe e caratteri da un file esterno.

cat in C++ (cat.cc)
using namespace std;
#include 
#include 
#include 

int main(int argc, char **argv) {
  fstream myfile;
  string line;
 
  if(argc != 2) {
    cout << "Usage: " << argv[0] << " \n";
    exit(0);
  }
  myfile.open(argv[1], ios::in);
 
  while(!myfile.eof()) {
    getline(myfile,line);
    cout << line << endl; 
  } 
  myfile.close();
  
  return 0;
}
cat in Python (cat.py)
#! /usr/bin/env python
import sys

inputfile = open(sys.argv[1], 'rb')
data = inputfile.read()
print data
inputfile.close()
Come potete vedere con Python potete eseguire le stesse operazioni con metà righe, ma la cosa che personalmente preferisco è che non dovete compilare per poi aprire il vostro eseguibile, il file sorgente è già "eseguibile"!

La gestione dei numeri con Python

La gestione dei numeri è estremamente comoda con pyhton! Se ad esempio con C volete sommare due numeri dovete creare un file che includa una libreria, creare 2 variabili, prelevare l'input da tastiera, salvare tale input nella variabile,... ecc.. con python invece è semplicissimo!
Apriamo un terminale e invochiamo l'interprete, supponiamo di voler sommare 2 a 4, allora scriviamo:
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 + 4
6
e poi diamo "Enter". L'interprete chiaramente ci restituirà 6.
Oppure possiamo eseguire diverse operazioni sulla stessa riga:
>>> 10 + 15 - 6 / 3
23

Le stringhe

Oltre ai numeri, Python può anche manipolare stringhe, che possono essere espresse in diversi modi. Possono essere racchiuse tra apici singoli o virgolette:
>>> 'ciao a tutti'
'ciao a tutti'
>>> 'l\'albero'
"l'albero"
>>> "l'albero"
"l'albero"
>>> '"citazione" - di qualcuno.'
'"citazione" - di qualcuno.'
Le stringhe costanti possono estendersi su più righe in modi diversi. Si possono scrivere lunghe righe usando il cosiddetto carattere di "escape" come ultimo carattere di riga, questo indicherà che la riga successiva sarà in realtà la logica continuazione della precedente:
>>> stringa = "ciao\na\ntutti"
>>> print stringa
ciao
a
tutti
Se avessi scritto:
>>> stringa = "ciao\n  a\ntutti"
>>> print stringa
Avrebbe prodotto il seguente output, dato che anche gli spazi sono significativi:
ciao
  a
tutti

Assegnare un valore ad una variabile

Come in C, C++, Java, .. il simbolo (=) è usato per assegnare un valore ad una variabile.
>>> larghezza = 20
>>> altezza = 5*9
>>> larghezza * altezza
900
Lo stesso valore può essere assegnato a variabili diverse.
>>> x = y = z = 0
>>> print x, y, z
0 0 0
>>> x = 2
>>> y = x
>>> z = x
>>> print x, y, z
2 2 2

Le liste

Python riconosce una certa quantità di tipi di dati composti, usati per raggruppare insieme altri valori. Il più versatile è il tipo lista, che può essere scritto come una lista, compresa tra parentesi quadre, di valori (gli elementi della lista) separati da virgole. Gli elementi della lista non devono essere necessariamente tutti dello stesso tipo.
>>> lista = ['ciao', 'mondo', 100, 5678]
>>> lista
['ciao', 'mondo', 100, 5678]
Come per le stringe, se volete accedere all'n-esimo elemento della lista dovete scrivere:
>>> nome_lista[indice_elemento]
elemento ritornato
Ad esempio per la lista scritta sopra:
>>> lista[1]
'mondo'
Per le liste ci sono una serie di operazioni (merge, append, sort, .. , ecc) utili ed interessanti spiegate in modo esaustivo nel manuale.

Commenti