Eseguire un programma Python
In questa pagina 6
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
Definizione (istruzione, espressione e blocco)
- 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
:.
Esempio. Con x = 7, 2 * x + 1 è una espressione che vale 15, mentre y = 2 * x + 1 è una istruzione che assegna 15 a y.
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
Definizione (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 →.
Esempio. 1 / 0 provoca ZeroDivisionError a tempo di esecuzione; if x > 0 senza i due punti è un SyntaxError e il file non parte.
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.
Versione ripasso
Due modi di usare l'interprete
- Interattivo (REPL):
pythonda terminale (>>>). Valuta e stampa subito ogni espressione. - Script: file
nome.pyeseguito conpython nome.py. Esecuzione dall'alto verso il basso; le espressioni da sole non stampano (serveprint).
Struttura del codice
- Istruzione: unità eseguibile, una per riga.
- Espressione: produce un valore (
2 * x + 1). - Blocchi: definiti dall'indentazione (4 spazi). La riga che apre un blocco termina con
:. - Commenti: da
#a fine riga. Docstring: stringa tra triple virgolette a inizio modulo/funzione (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 →).
Identificatori e parole riservate
- Nomi: lettere, cifre,
_; non iniziano con cifre; case-sensitive (x≠X). - Convenzioni (PEP 8):
snake_case(variabili/funzioni),MAIUSCOLO(costanti),CamelCase(classi). - Parole riservate non usabili:
if,else,for,while,def,return,and,or,not,in,is,None,True,False,import,class, ecc.
Funzioni predefinite essenziali
print(...),input(...)(restituisce semprestr),type(x),int(),float(),str(),bool(),len(s),help(f). Dettagli 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
- Sintassi (
SyntaxError,IndentationError): il file non si esegue. - A tempo di esecuzione (eccezione, es.
NameError,TypeError,ZeroDivisionError): il programma si ferma 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 →. - Logico: programma corretto sintatticamente ma risultato errato. 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 (
TabError). - Dimenticare i
:dopoif,for,def. - Dimenticare
printper le espressioni negli script.