Eseguire un programma Python
In questa pagina 6
Due modi di usare l'interprete
- Interattivo (REPL):
pythonda terminale apre il prompt>>>. Ogni espressione viene valutata e il risultato stampato subito. Utile per provare singole istruzioni. - Script: il programma sta in un file
nome.pye si esegue conpython nome.py. Le istruzioni vengono eseguite dall'alto verso il basso; un'espressione da sola non stampa niente (serveprint).
saluto.pypython
nome = input("Come ti chiami? ")
print("Ciao,", nome)> python saluto.py
Come ti chiami? Ada
Ciao, AdaStruttura del codice
- Istruzione: unità eseguibile (assegnamento,
if,for, chiamata di funzione...). Di norma una per riga. - Espressione: combinazione di valori, variabili, operatori e chiamate che produce un valore (
2 * x + 1). Un'espressione può comparire dove serve un valore; un'istruzione no. - Blocchi definiti dall'indentazione (convenzione: 4 spazi). La riga che apre un blocco termina con
:.
python
x = 7
if x > 0:
print("positivo") # nel blocco dell'if
print("ancora nel blocco")
print("fuori") # fuori dal blocco- Commenti: da
#a fine riga. Una stringa tra triple virgolette all'inizio di modulo/funzione è una docstring (documentazione, vedi Funzioni in Pythondef e return, parametri posizionali, con nome e con valore predefinito, *args e **kwargs; passaggio per riferimento a oggetto; ambito delle variabili LEGB; docstring, type hint, lambda.Funzioni in Python →). - Riga troppo lunga: si va a capo dentro parentesi tonde/quadre/graffe senza bisogno di altro.
Identificatori e parole riservate
- Nomi: lettere, cifre,
_; non iniziano con una cifra; distinzione maiuscole/minuscole (x≠X). - Convenzioni (PEP 8):
snake_caseper variabili e funzioni,MAIUSCOLOper costanti,CamelCaseper classi. - Parole riservate non usabili come nomi:
if,else,elif,for,while,def,return,and,or,not,in,is,None,True,False,import,class,try,except,break,continue,pass,lambda,with, ... - Non è vietato ma è un errore grave riusare nomi di funzioni predefinite (
list = [1, 2]nascondelist()).
Funzioni predefinite essenziali
| Funzione | Uso |
|---|---|
print(a, b, sep=" ", end="\n") |
stampa |
input(prompt) |
legge una riga da tastiera, restituisce sempre str |
type(x) |
tipo dell'oggetto |
int(), float(), str(), bool() |
conversioni |
len(s) |
lunghezza di una sequenza |
help(f) |
documentazione |
Dettagli su lettura e stampa in Input e output da consoleinput() restituisce sempre una stringa da convertire; lettura di più valori su una riga; print con sep, end e file; flussi standard stdin, stdout, stderr e reindirizzamento.Input e output da console →.
Tipi di errore
- Errore di sintassi (
SyntaxError,IndentationError): il file non viene eseguito affatto. - Errore a tempo di esecuzione (eccezione:
NameError,TypeError,ZeroDivisionError...): il programma si ferma alla riga che lo provoca, con un traceback. Vedi Eccezioni in PythonEccezioni e traceback, eccezioni predefinite più comuni, try/except/else/finally, raise per segnalare errori, propagazione lungo le chiamate.Eccezioni in Python →. - Errore logico: il programma termina ma il risultato è sbagliato. Vedi Debugging e testingTipi di errore, metodo per localizzare un bug, lettura del traceback, stampe di controllo, debugger (VS Code, pdb, gdb), assert e strumenti per la memoria in C; test di unità, casi limite e partizioni, doctest e unittest.Debugging e testing →.
Errori tipici
- Mescolare tab e spazi nell'indentazione (
TabError). - Dimenticare i
:dopoif,for,def. - Aspettarsi che una riga come
x + 1in uno script stampi il risultato: lo fa solo nel REPL.