2.2. Dichiarare le funzioni

Python supporta le funzioni come molti altri linguaggi, ma non necessita di header file separati come il C++ o sezioni di interfaccia/implementazione come il Pascal. Quando avete bisogno di una funzione, basta che la dichiariate e la definiate.

Esempio 2.3. Dichiarare la funzione buildConnectionString


def buildConnectionString(params):

Ci sono alcune cose da chiarire qui. Inanzitutto, la parola chiave def inizia la dichiarazione della funzione, viene poi seguita dal nome della funzione e dagli argomenti fra parentesi. Argomenti multipli (non mostrati qui) devono essere separati da virgole.

Seconda cosa, la funzione non definisce un valore di ritorno. Le funzioni Python non specificano il tipo dei loro valori di ritorno; esse non specificano neppure se ritornano un valore oppure no. In effetti, ogni funzione Python ritorna un valore; se la funzione esegue un return essa ritornerà quel valore, altrimenti restituirà None, il valore nullo di Python.

Nota
Nel Visual Basic, le funzioni (che ritornano un valore) iniziano con function, e le procedure (che non ritornano un valore) iniziano con sub. Non esistono procedure in Python. Sono tutte funzioni, ritornano un valore, anche se è None ed iniziano tutte con def.

Terza cosa, l'argomento, o parametro, non specifica alcun tipo. In Python le variabili non sono mai definite con un tipo esplicito. È il Python stesso che si occupa dei tipi delle variabili e li gestisce internamente.

Nota
In Java, C++, ed in altri linguaggi con tipi di dato statici, dovete specificare il tipo del valore di ritorno della funzione e di ogni suo argomento. In Python non si specifica mai espressamente nessun tipo di dato. A seconda del valore che assegnerete, Python terrà conto del tipo di dato internamente.

Appendice.  Un lettore erudito mi ha mandato questa spiegazione di come il Python si confronta con altri linguaggi di programmazione:

linguaggio tipato staticamente
Un linguaggio nel quale i tipi sono fissati al momento della compilazione. Molti linguaggi staticamente tipati ottengono ciò costringendovi a dichiarare tutte le variabili con il loro tipo di dato prima di usarle. Java e C sono linguaggi staticamente tipati.
linguaggio tipato dinamicamente
Un linguaggio nel quale i tipi sono scoperti durante l'esecuzione; l'opposto dell'impostazione statica. VBScript e Python sono tipati dinamicamente, dato che essi scoprono il tipo di una variabile nel momento in cui le assegnate un valore.
linguaggio fortemente tipato
Un linguaggio nel quale i tipi sono sempre imposti. Java e Python sono fortemente tipati. Se avete un intero, non potete trattarlo come una stringa senza convertirlo esplicitamente (molte dritte su come farlo le troverete più avanti in questo capitolo).
linguaggio debolmente tipato
Un linguaggio nel quale i tipi possono essere ignorati; l'opposto di un linguaggio fortemente tipato. VBScript è debolmente tipato. In VBScript, potete concatenare la stringa '12' e l'intero 3 in modo da ottenere la stringa '123', per poi trattarla come l'intero 123, il tutto senza conversione esplicita.

Perciò Python è sia dinamicamente tipato (visto che non utilizza dichiarazione esplicite di tipo) sia fortemente tipato (visto che nel momento in cui una variabile ha un suo tipo, questo ha una reale importanza).