




























































































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Guida Python 3.0 - Dispensa illustrata
Tipologia: Dispense
1 / 114
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





























































































Python è un potente linguaggio di programmazione facile e divertente da imparare. Possiede strutture di dati di alto livello molto potenti e semplici da maneggiare utilizzando un' approccio object-oriented cioè orientato agli oggetti. Inoltre la sua sintassi è elegante ed ha la gestione dei tipi dinamica unitamente alla sua natura di tipo interprete, tutto questo rende Python un linguaggio ideale per lo scripting e lo sviluppo rapido di applicazioni in molte aree sulla maggior parte delle piattaforme. L'interprete Python possiede un'ampia libreria standard liberamente disponibile in formato sorgente o in forma binaria per tutte le principali piattaforme disponibili sul sito Web di Python, http://www.python.org/, che possono essere utilizzate e distribuite liberamente. Lo stesso sito contiene anche collegamenti a molti moduli liberi prodotti da terzi per Python, programmi strumenti e documentazione aggiuntiva. L'interprete di Python è facilmente estendibile permette di aggiungere nuove funzioni e tipi di dati implementati in C o C + + (o altri linguaggi richiamabili da C). Esso è adatto anche come linguaggio di estensione per applicazioni personalizzabili. Questa guida, introduce informalmente il lettore ai concetti base e alle caratteristiche del linguaggio e di sistema. Aiuta ad utilizzare l'interprete in modo pratico per esperienza alla mano con tutti gli esempi pratici descritti in modo da poterla utilizzare anche senza l'utilizzo di una connessione. Per una descrizione degli oggetti standard e dei suoi moduli, consultare la libreria standard di Python. The Python Standard Library fornisce una definizione più formale e dettagliata del linguaggio. Per scrivere estensioni in C o C + +, fare riferimento a The Python Language Reference. Inoltre ci sono moltissimi libri in lingua inglese ed alcuni in lingua italiana di ottimo livello per poter approfondire la sua conoscenza con tecniche altamente professionali. Altri importanti riferimenti si trovano a questi link: Extending and Embedding the Python Interpreter e Python/C API Reference Manual. Questa guida, non intende essere esaustiva e coprire ogni singola caratteristica, o anche tutte le funzionalità di uso comune. Tende invece a introdurre molte fra le caratteristiche più notevoli di Python e vi darà una buona idea sul gusto e stile del linguaggio. Dopo averla letta, sarete in grado di leggere e scrivere moduli e programmi e sarete pronti ad imparare di più sui vari moduli della libreria Python descritta in in The Python Standard Library. Vale inoltre la pena dare un'occhiata al Glossary.
Python è un linguaggio interpretato, ciò significa che è possibile risparmiare molto tempo durante lo sviluppo del programma, perché non è necessaria la continua compilazione e conseguente linkaggio. L'interprete può essere utilizzato interattivamente il che lo rende facile per sperimentare le caratteristiche proprie, scrivere programmi usa e getta per testare funzioni durante lo sviluppo di un programma principale. Inoltre è anche un'utile calcolatrice. Python consente ai programmi di essere scritti in modo compatto e di essere di facile lettura in quanto obbliga a scriverli in un certo modo. I programmi scritti in Python sono in genere molto più brevi dei programmi equivalenti C C + + o Java, per diverse ragioni fra cui:
Su sistemi UNIX/LINUX: L'interprete Python su una macchina Unix/Linux, è generalmente installato in /usr/local/bin/python3.x (la x specifica il particolare numero di versione) su quelle macchine dove è disponibile; mettere /usr/local/bin nel percorso di ricerca della shell Unix/Linux rende possibile avviarlo digitando il comando: python Poiché la scelta della directory in cui risiede l'interprete è un'opzione di installazione, è possibile installare Python in altre posizioni che potete decidere da soli o con l'amministratore del sistema. (Ad esempio, /usr/local/python è una scelta piuttosto popolare.) su sistemi WINDOWS: Su macchine Windows, l'installazione di Python è di solito collocata in C:\Python3x, anche se è possibile modificare la posizione in fase di installazione. Per aggiungere questa directory al file di path, è possibile digitare il seguente comando nel prompt dei comandi in un terminale DOS: set path=%path%;C:\python3x Digitando un carattere di end-of-file ( Control-D su Unix/Linux, Control-Z su Windows) al prompt primario fa sì che l'interprete esca con uno stato di uscita uguale zero. Se questo non funziona, si può uscire l'interprete digitando quit(). E' possibile inoltre far convivere quante versioni di Python si desidera senza che entrino in conflitto far di loro. Gli editor di linea per l'interprete di solito non hanno funzionalità molto sofisticate. Su Unix/Linux, chiunque abbia installato l'interprete può avere abilitato il supporto per la libreria GNU readline, che aggiunge più elaborate funzioni di editing e una cronologia interattiva. Forse il controllo più veloce per vedere se la modifica della riga di comando che si sta scrivendo è supportata è Control-P quando si ottiene il prompt di Python. Se si ottiene un beep, allora si ha l'editing della riga di comando, fare riferimento all'appendice Interactive Input Editing and History Substitution per un'introduzione sull'uso dei tasti. Se ciò non sembra funzionare o se viene visualizzato ^P allora l'editing della riga di comando non è disponibile, sarete solo in grado di utilizzare backspace per rimuovere i caratteri dalla riga corrente. L'interprete di Python, opera all'incirca come una shell Unix/Linux, quando viene chiamato con lo standard input connesso a un dispositivo terminale (la tastiera) legge ed esegue i comandi in modo interattivo, se Python viene chiamato e come argomento, viene passato un file di script, allora Python si avvia eseguendo lo script del file passato. Un secondo modo di lanciare l'interprete è python -c command [arg] ..., che esegue l'istruzione/i al comando, analogo a -C dell'opzione della shell. Poiché istruzioni Python contengono spesso spazi o altri caratteri che sono speciali per la shell, di solito è consigliato l'uso preventivo di apici
modalità interattiva ritorna al prompt primario. Quando invece l'input è venuto da un file, esso esce con uno stato diverso da zero dopo aver stampato la traccia dello stack. (Eccezioni gestite da una clausola except in un'istruzione try non sono errori in questo contesto.) Alcuni errori sono incondizionatamente fatali e provocano un'uscita forzata con un valore diverso da zero, questo vale per le incoerenze interne e alcuni casi tipo esaurimento della memoria disco ecc. Tutti i messaggi di errore vengono scritti nel flusso di errore standard-output tipicamente il monitor o dove specificato. Digitando il carattere di interruzione (di solito Ctrl-C o CANC ) al prompt primario o secondario si cancella l'input e ritorna al prompt primario ( >>> ). [2] Provocare un'interruzione forzata mentre un comando è in esecuzione solleva l'eccezione KeyboardInterrupt, che può essere gestita tramite un'istruzione try.
Sui sistemi Unix/Linux in stile BSD, gli script Python possono essere direttamente eseguibili, come script di shell inserendo la riga: #!/usr/bin/env python3.x (supponendo che l'interprete si trovi nel PATH dell'utente) all'inizio dello script e dando al file il permesso di esecuzione. I caratteri #! devono essere i primi due caratteri del file. Su alcune piattaforme, questa prima riga deve terminare con una linea finale in stile Unix (' \n ' cioè il terminatore di linea significante 'nuova linea '), non tipo Windows (' \r\n ' cioè il terminatore di linea significante ' ritorno del carrello più nuova linea '). Va notato che il carattere ' # 'o hash, o carattere cancelletto, viene utilizzato anche per descrivere un commento in Python. Uno script per poter essere eseguito, deve avere un permesso come tale. E possibile renderlo eseguibile utilizzando il comando chmod : $ chmod +x myscript.py Sui sistemi Windows, non vi è alcuna nozione di " modo eseguibile ". Il programma di installazione di Python associa automaticamente l'estensione .Py con python.exe in modo che un doppio clic su un file Python verrà eseguito come uno script. L'estensione può anche essere. PYW , in questo caso, la finestra di console che appare normalmente viene soppressa.
Per impostazione predefinita, i file sorgenti Python vengono trattati come codificati in UTF-8. Con tale codifica, è possibile rappresentare la maggior parte delle lingue del mondo. Essi possono essere utilizzati contemporaneamente nelle stringhe letterali come identificatori e commenti. Si consiglia comunque di utilizzare solo caratteri ASCII per gli identificatori, ed è buona norma utilizzare solo questo tipo di caratteri se vogliamo che il nostro codice sia veramente portabile e di utilizzare UTF-8 solo per stringhe di testo per i messaggi nella specifica lingua. Comunque per visualizzare correttamente tutti i caratteri, il vostro editor deve riconoscere che il file è UTF-8 , e deve utilizzare un font che supporta tutti i caratteri utilizzati dal file. È anche possibile specificare una codifica differente per i file sorgente. Per fare questo, mettere ancora una riga di commento speciale subito dopo la linea #! per definire la codifica del file di
origine: **# * coding: encoding *** Con questa dichiarazione, tutto nel file sorgente verrà considerata come avente la codifica encoding invece di UTF-8. L'elenco dei possibili codifiche può essere trovata nella Python Library Reference, nella sezione codecs. Ad esempio, se il vostro editor preferito non supporta file codificati UTF-8 e insiste sull'utilizzo di qualche altra codifica, è possibile per esempio scrivere Windows-1252, per ottenere il risultato: **# * coding: cp1252 *** Ciò utilizzerà tutti i caratteri di caratteri nei file sorgente in Windows-1252. Il commento speciale codifica deve essere nella prima riga se è da solo o nella seconda linea se presente quella di path all'interno del file.
Quando si usa Python interattivamente, è spesso comodo che alcuni comandi standard vengano eseguiti ogni volta che l'interprete viene avviato. È possibile farlo impostando una variabile di ambiente denominata PYTHONSTARTUP essa può contenere il nome di un file contenente i comandi di start-up. Questo è simile alla funzione .profile delle shell di Unix/Linux. Questo file viene letto solo nelle sessioni interattive, non quando Python legge comandi da uno script, e non quando /dev/tty è impostata come sorgente dei comandi (altrimenti si comporterebbe come una sessione interattiva). Esso viene eseguito nello stesso spazio dei nomi in cui vengono eseguiti i comandi interattivi, cosicché gli oggetti che definisce o importa possono essere utilizzati senza riserve nella sessione interattiva. È inoltre possibile modificare in questo filele istruzioni sys.ps1 e sys.ps2 che permettono di cambiare i prompt di Python. Se volete leggere un file di avvio addizionale dalla directory corrente, è possibile programmare questo nel file globale di avvio utilizzando il codice tipo os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()). Se si desidera utilizzare il file di avvio in uno script, deve essere necessariamente nello script: import os filename = os.environ.get('PYTHONSTARTUP') if filename and os.path.isfile(filename): exec(open(filename).read()) Queste impostazioni possono essere utili ma non è necessario che le approfondiate adesso.
Python fornisce due modi che consentono di personalizzarli: sitecustomize e usercustomize. Per vedere come funziona, è necessario prima di trovare il percorso della directory site-packages utente.
L'interprete si comporta come una semplice calcolatrice: si può digitare un'espressione ed esso fornirà il risultato. La sintassi delle espressioni è semplice: gli operatori + , - , ***** e / funzionano come nella maggior parte degli altri linguaggi (ad esempio, Pascal o C); parentesi anche nidificate (()) possono essere utilizzati per il raggruppamento e la risoluzione. Per esempio: **>>> 2 + 2 4
50 5* 20 (50 5*6) / 4
8 / 5 # la divisione restituisce sempre un numero in virgola mobile (diversamente da Python 2.x) 1.** I numeri interi (es. 2 , 4 , 20 ) sono di tipo int, quelli con una parte frazionaria (es. 5.0, 1.6) sono di tipo float. Vedremo di più su tipi numerici più avanti nella guida. Divisione (/) restituisce sempre un float. Per ottenere un risultato intero (scartando qualsiasi risultato frazionario) è possibile utilizzare l'operatore // vedere floor division , per calcolare il resto è possibile utilizzare %: **>>> 17/3 #classica divisione restituisce un numero in virgola mobile
17//3 # divisione che scarta la parte decimale 5 17%3 # l'operatore % invece restituisce la rimanenza della divisione 2 5 * 3 + 2 17** Con Python è possibile usare l'operatore ****** per calcolare la potenza di un numero [1]: >>> 5 ** 2 # 5 il quadrato 25 2 ** 7 # 2 elevato alla potenza di 7 128 Il segno di uguale ( = ) viene utilizzato per assegnare un valore a una variabile e non come operatore di confronto (==). Successivamente, nessun risultato viene visualizzato prima del successivo prompt interattivo:
**>>> altezza = 20
larghezza = 5 * 9 altezza * larghezza 900** Se si cercherà di utilizzare una variabile a cui non si sia precedentemente assegnato un valore, si genererà un'errore. >>> n # variabile senza assegnazione Traceback (most recent call last): File "
", line 1, in Python ha un potente supporto per i dati in virgola mobile e operatori di tipo con operandi misti, convertono l' operando intero a virgola mobile: **>>> 3 * 3.75 / 1.NameError: name 'n' is not defined
7.0 / 2 3.** In modo interattivo, l'ultima espressione stampata viene assegnata alla variabile _. Ciò significa che quando si utilizza Python come una calcolatrice da tavolo, è un po 'più facile continuare calcoli, ad esempio: **>>> tassa = 12.5 / 100 prezzo = 100. prezzo * tassa
prezzo + _
round(, 2) 113.** 17%3 # l'operatore % invece restituisce la rimanenza della divisione 2 >>> 5 * 3 + 2 17** Con Python è possibile usare l'operatore ****** per calcolare la potenza di un numero [1]: >>> 5 ** 2 # 5 il quadrato 25 >>> 2 ** 7 # 2 elevato alla potenza di 7 128 Il segno di uguale ( = ) viene utilizzato per assegnare un valore a una variabile e non come operatore di confronto (==). Successivamente, nessun risultato viene visualizzato prima del successivo prompt interattivo: >>> altezza = 20 >>> larghezza = 5 * 9 >>> altezza * larghezza 900 Se si cercherà di utilizzare una variabile a cui non si sia precedentemente assegnato un valore, si genererà un'errore. >>> n # variabile senza assegnazione Traceback (most recent call last): File "
", line 1, in Python ha un potente supporto per i dati in virgola mobile e operatori di tipo con operandi misti, convertono l' operando intero a virgola mobile: >>> 3 * 3.75 / 1. 7. >>> 7.0 / 2 3. In modo interattivo, l'ultima espressione stampata viene assegnata alla variabile ****. Ciò significa che quando si utilizza Python come una calcolatrice da tavolo, è un po 'più facile continuare calcoli, ad esempio: >>> tassa = 12.5 / 100 >>> prezzo = 100. >>> prezzo * tassa 12. >>> prezzo + _ 113. >>> round(_, 2) 113. Questa variabile deve essere considerata come a sola lettura da parte dell'utente. Non assegnare esplicitamente un valore ad essa per utilizzare il suo contenuto, bisogna creare una variabile locale indipendente per mascherare la variabile precostituita con il suo comportamento magico.NameError: name 'n' is not defined
Oltre a int e float, Python supporta altri tipi di numeri, come Decimal e Fraction. Python ha anche il supporto integrato per i numeri complessi complex numbers , e utilizza il suffisso j o J per indicare la parte immaginaria (es. 3+5j).
Oltre ai numeri, Python può anche manipolare stringhe, che possono essere espresse in vari modi. Esse possono essere racchiuse tra singoli apici ('...') o doppi apici ("...") con lo stesso risultato [2]. il
Usare: Queste [OPZIONI] Visualizza queste righe h ... H hostname ... """) Le stringhe possono essere concatenate (incollate assieme sequenzialmente) con l'operatore + , e ripetuto con ***** : **>>> # 3 volte 'Pippo ', seguito da ' si!'
3 * 'Pippo ' + ' si!' 'Pippo Pippo Pippo si!'** Due o più stringhe letterali (cioè quelle racchiuse tra virgolette) l'una accanto all'altra vengono automaticamente concatenate. >>> 'Py' 'thon' 'Python' Questo funziona solo con i letterali ma non con le variabili o espressioni:
prezzo + _ 113. >>> round(_, 2) 113.** Questa variabile deve essere considerata come a sola lettura da parte dell'utente. Non assegnare esplicitamente un valore ad essa per utilizzare il suo contenuto, bisogna creare una variabile locale indipendente per mascherare la variabile precostituita con il suo comportamento magico. Oltre a int e float, Python supporta altri tipi di numeri, come Decimal e Fraction. Python ha anche il supporto integrato per i numeri complessi complex numbers , e utilizza il suffisso j o J per indicare la parte immaginaria (es. 3+5j). #### 3.1.2. Le Stringhe. Oltre ai numeri, Python può anche manipolare stringhe, che possono essere espresse in vari modi. Esse possono essere racchiuse tra singoli apici ('...') o doppi apici ("...") con lo stesso risultato [2]. il Usare: Queste [OPZIONI] Visualizza queste righe h ... H hostname ... """) Le stringhe possono essere concatenate (incollate assieme sequenzialmente) con l'operatore + , e ripetuto con ***** : >>> # 3 volte 'Pippo ', seguito da ' si!' >>> 3 * 'Pippo ' + ' si!' 'Pippo Pippo Pippo si!' Due o più stringhe letterali (cioè quelle racchiuse tra virgolette) l'una accanto all'altra vengono automaticamente concatenate. >>> 'Py' 'thon' 'Python' Questo funziona solo con i letterali ma non con le variabili o espressioni: >>> prefix = 'Py' prefix 'thon' #non è possibile concatenare una variabile con una stringa. ... SyntaxError: invalid syntax ('un' * 3) 'ium' ... SyntaxError: invalid syntax Se lo scopo è quello di concatenare due variabili, allora dovete usare il segno + : >>> prefix = 'thon' 'Python' Questa caratteristica e spesso usata quando si cerca di spezzare stringhe troppo lunghe: >>> text = ('Mettere più stringhe all'interno di' 'parentesi per unirle.') text 'Mettere più stringhe all'interno di parentesi per unirle.' Le stringhe possono essere indicizzate per cui il primo carattere ha come indice lo 0. Non vi è alcuna distinzione fra caratteri! Semplicemente ognuno rappresenta se stesso:
**>>> word = 'Python'
word[0] # carattere alla posizione 0 'P' word[5] # carattere alla posizione 5 'n'** Gli indici possono essere anche numeri negativi, in questo caso il conteggio inizia da destra: >>> word[1] # l'ultimo carattere 'n' word[2] # penultimo carattere 'o' word[6] # il primo carattere 'P' Si noti che poiché -0 è lo stesso di 0, gli indici negativi partono da -1. Oltre all'indicizzazione, è supportato anche la divisione o slicing (letteralmente 'affettamento'). Mentre l'indicizzazione viene utilizzata per ottenere singoli caratteri, la divisione viene utilizzata per ottenere delle sotto stringhe: prefix 'thon' #non è possibile concatenare una variabile con una stringa. ... SyntaxError: invalid syntax >>> ('un' * 3) 'ium' ... SyntaxError: invalid syntax** Se lo scopo è quello di concatenare due variabili, allora dovete usare il segno + : >>> prefix = 'thon' 'Python' Questa caratteristica e spesso usata quando si cerca di spezzare stringhe troppo lunghe: >>> text = ('Mettere più stringhe all'interno di' 'parentesi per unirle.') >>> text 'Mettere più stringhe all'interno di parentesi per unirle.' Le stringhe possono essere indicizzate per cui il primo carattere ha come indice lo 0. Non vi è alcuna distinzione fra caratteri! Semplicemente ognuno rappresenta se stesso: >>> word = 'Python' >>> word[0] # carattere alla posizione 0 'P' >>> word[5] # carattere alla posizione 5 'n' Gli indici possono essere anche numeri negativi, in questo caso il conteggio inizia da destra: >>> word[1] # l'ultimo carattere 'n' >>> word[2] # penultimo carattere 'o' >>> word[6] # il primo carattere 'P' Si noti che poiché -0 è lo stesso di 0, gli indici negativi partono da -1. Oltre all'indicizzazione, è supportato anche la divisione o slicing (letteralmente 'affettamento'). Mentre l'indicizzazione viene utilizzata per ottenere singoli caratteri, la divisione viene utilizzata per ottenere delle sotto stringhe: >>> word[0:2] # caratteri dalla posizione 0 alla 2 incluse 'Py' word[2:5] # caratteri dalla posizione 0 inclusa a 5 esclusa 'tho' Si noti come l'inizio è sempre incluso, e la fine sempre esclusa. Questo fa in modo che s [: i] + s [i:] è sempre uguale a s : >>> word[:2] + word[2:] 'Python' word[:4] + word[4:] 'Python' Gli indici delle sotto stringhe, hanno valori predefiniti utili; se omesso il primo indice è uguale a zero,
text 'Mettere più stringhe all'interno di parentesi per unirle.'** Le stringhe possono essere indicizzate per cui il primo carattere ha come indice lo 0. Non vi è alcuna distinzione fra caratteri! Semplicemente ognuno rappresenta se stesso: >>> word = 'Python' >>> word[0] # carattere alla posizione 0 'P' >>> word[5] # carattere alla posizione 5 'n' Gli indici possono essere anche numeri negativi, in questo caso il conteggio inizia da destra: >>> word[1] # l'ultimo carattere 'n' >>> word[2] # penultimo carattere 'o' >>> word[6] # il primo carattere 'P' Si noti che poiché -0 è lo stesso di 0, gli indici negativi partono da -1. Oltre all'indicizzazione, è supportato anche la divisione o slicing (letteralmente 'affettamento'). Mentre l'indicizzazione viene utilizzata per ottenere singoli caratteri, la divisione viene utilizzata per ottenere delle sotto stringhe: >>> word[0:2] # caratteri dalla posizione 0 alla 2 incluse 'Py' >>> word[2:5] # caratteri dalla posizione 0 inclusa a 5 esclusa 'tho' Si noti come l'inizio è sempre incluso, e la fine sempre esclusa. Questo fa in modo che s [: i] + s [i:] è sempre uguale a s : >>> word[:2] + word[2:] 'Python' >>> word[:4] + word[4:] 'Python' Gli indici delle sotto stringhe, hanno valori predefiniti utili; se omesso il primo indice è uguale a zero, così se omesso il secondo, viene definito dalla lunghezza della sotto stringa. >>> word[:2] # carattere dall'inizio alla posizione 2 'Py' word[4:] # carattere dalla posizione 4 alla fine 'on' word[2:] # carattere dalla penultima posizione alla fine 'on' Indici fuori intervallo, sono trattati ignorandoli evitando così errori inutili: >>> word[4:42]