Caratteristiche del linguaggio

Interpretato, ma con produzione di "bytecode".

Il linguaggio e' interpretato, ovvero tradotto in linguaggio macchina una istruzione per volta, tipo la shell di Unix; e' quindi un linguaggio che puo' essere usato in modo interattivo, ma inefficiente dal punto di vista del calcolo. Un programma Python puo' anche essere messo in un file, ed eseguito, come un'unica procedura; durante la traduzione viene prodotto un "bytecode", ovvero una versione del programma semi compilata, posta in un file con estensione "pyc". Se il programma viene eseguito una seconda volta, senza modifiche, si utilizza direttamente il byptecode, con un vantaggio in termini di prestazioni.

Sintassi semplice.

La sintassi e' semplice, ci sono pochi construtti e non c'e' bisogno di dichiarare il tipo delle variabili. Non ci sono puntatori, anche se tutte le variabili sono implementate con puntatori. Il Python si occupa di individuare il tipo di ogni variabile quando viene definita, e fa conversioni automatiche quando occorre.

Strutture complesse gia' implementate.

Il Python comprende una implementazione di strutture complesse, di uso comune in programmazione, come: liste, dizionari, tuple, stringhe. In Python queste sono trattate come tipi di dati e ci sono gia' funzioni per agire su di esse, come funzioni di ordinamento, di ricerca etc.

Orientato agli oggetti.

Python e' internamente strutturato ad oggetti, e praticamente tutti i tipi di dati sono oggetti. Ha istruzioni per definire classi e istanziarne oggetti. Il modo di trattare le classi e' semplice: essenzialmente gioca sulla sintassi dei nomi per isolarne gli elementi; in questo modo un vero e proprio incapsulamento manca: e' sempre possibile, accedere agli elementi di una classe dal di fuori.. C'e' ereditarieta' multipla.

Riusabilita'

C'e' la possibilita' di definire "moduli": insieme di funzioni Python predefinite, conservate in un file, che possono essere riutilizzate, inserendole in programmi diversi, senza che ci sia confusione fra le variabili del programma e quelle dei moduli stessi. I moduli possono essere raggruppati in "packages", che costituiscono delle vere e proprie librerie da importare in un programma.

Funzionalita' gia' pronte.

Python contiene una grande libreria di funzioni, inoltre si trovano in libera distribuzione moduli Python per fare moltissime cose: interfaccia con database, grafica , networking etc.

Facile integrazione con altri linguaggi.

C'e' la possibilita' di usare Python per legare insieme componenti sviluppate con altri linguaggi, tipo Java, C o C++. C'e' anche Jython, un compilatore che traduce un programma Python in un bytecode java.

Caratteristiche peculiari.

Python ha diverse caratteristiche peculiari, proprie dei linguaggi moderni; come un sistema di "garbage collection", per liberare memoria inutilizzata, ed il "dynamic typing", cioe' il fatto che il tipo degli oggetti e' definito durante l'esecuzione del programma e non durante la compilazione. Questo permette di scrivere parti di programma in modo indipendente dal tipo di dato che in esso verra' utilizzato (polimorfismo). Inoltre puo' accedere alle strutture interne dei suoi oggetti; questa proprieta e' chiamata introspezione o reflection. Un programma Python puo' anche modificare se stesso a run-time (metaprogramming).

Uso

Python e' disponibile praticamente per tutte le architetture, ed incluso in tutte le distribuzioni di Linux. Si puo' usare in modo interattivo o mettere istruzioni pyhton in file ed eseguirlo.

Esempio di Uso interattivo in Linux (dalla shell):

$ Python
>>> 3+2
5
>>> a=16
>>> a
16
>>> Cntrl/D per finire

Un file con un programma Python: file.py si esegue con:

$ Python   file.py
$ Python3  file.py   # per usare una versione specifica di Python

In Unix un file eseguibile con, nella prima linea: #!/usr/bin/python Puo' essere eseguito direttamente come un comando.

Interfacce grafiche

Ci sono anche tool grafici per creare programmi Python, come "idle" , oppure "spyder", idle e' un'interfaccia grafica che rende disponibile una shell per eseguire programmi o singoli comandi, ed un editor per scrivere file con programmi Python. Integra anche un debugger.

idle-mini.png

Un altro sistema di sviluppo grafico e' spyder. (vedi spyder-ide.org), spyder e' piu' focalizzato su analisi dati scientifici, con uso di moduli come munpy, matplotlib o scipy. La figura mostra l'uso di Spyder per un semplice grafico.

spyder-midi.png

Esistono molte altre interfacce dedicate alla programmazione con Python, alcune commerciali, altre gratuite;

  • "Ipython" e' una shell Python con diverse estensioni per l'interazione con il sistema operativo;
  • "Ipython notebook" attiva un web server locale e permette di utilizzare l'interfacia del browser come shell grafica per l'ambiente Python;
  • "PyDev", un addon per il sistema di sviluppo "Eclipse", vedi: pydev.org
  • Altre sono "Eric", "*Pycharm*" "*Komodo IDE*" gran parte degli editor per la programmazione supportano il linguaggio.