Domande e risposte: Python

Ripassa Python: ecco una selezione di domande di ogni livello, con risposta e spiegazione. Per metterti alla prova senza vedere le risposte, gioca ai quiz.

Gioca ai quiz Python

Facile

Chi ha ideato il linguaggio Python?

Risposta : Guido van Rossum

Guido van Rossum ha ideato Python, la cui prima versione pubblicata risale al 1991.

Da dove viene il nome del linguaggio Python?

Risposta : Dalla compagnia comica britannica Monty Python

Guido van Rossum ha scelto questo nome in riferimento alla compagnia comica britannica Monty Python.

Che cosa delimita i blocchi di codice in Python, come il corpo di un if o di una funzione?

Risposta : L'indentazione

In Python l'indentazione non è un dettaglio di presentazione: delimita i blocchi di if, for, funzioni e classi.

Qual è il tipo del valore 3.14 in Python?

Risposta : float

Un numero scritto con un punto decimale è di tipo float; int indica gli interi senza parte decimale.

Quale parola chiave permette di aggiungere una seconda condizione dopo un if in Python?

Risposta : elif

elif è la contrazione di else if: aggiunge una condizione dopo l'if, prima di un eventuale else.

Quale struttura Python può essere modificata dopo la sua creazione?

Risposta : La lista

Una lista, scritta tra parentesi quadre, si modifica (aggiunta, eliminazione, sostituzione); una tupla, scritta tra parentesi tonde, non si modifica.

Quale espressione crea un dizionario Python con la chiave 'nom' e il valore 'Ada'?

Risposta : {'nom': 'Ada'}

Un dizionario si scrive tra parentesi graffe, nella forma chiave: valore; {'nom', 'Ada'} senza due punti è un insieme (set).

Quali valori produce list(range(3))?

Risposta : [0, 1, 2]

range(3) parte da 0 e si ferma prima di 3: produce 0, 1 e 2, cioè tre valori.

Medio

Che cosa restituisce [n * n for n in [1, 2, 3]]?

Risposta : [1, 4, 9]

Una comprensione di lista scorre la sequenza e calcola ogni elemento: qui n * n dà 1, poi 4 e poi 9.

Con def f(a, b=2): return b, che cosa restituisce f(1)?

Risposta : 2

Un parametro che ha un valore predefinito lo riceve quando il chiamante non gli fornisce un argomento.

Che cosa contiene il parametro **kwargs all'interno di una funzione?

Risposta : Un dizionario degli argomenti nominati

**kwargs raccoglie gli argomenti passati con un nome (parola=valore) in un dizionario.

Che cosa restituisce 'Bonjour'[0:3]?

Risposta : 'Bon'

Lo slicing [inizio:fine] prende gli indici a partire da inizio e si ferma prima di fine: qui gli indici 0, 1 e 2, cioè 'Bon'.

Quale nome indica per convenzione il primo parametro di un metodo d'istanza Python?

Risposta : self

Il primo parametro di un metodo d'istanza riceve l'oggetto corrente; la convenzione è chiamarlo self.

A che cosa serve un ambiente virtuale (venv) in Python?

Risposta : Isolare i pacchetti installati per un progetto specifico

Un venv è una cartella che isola i pacchetti di un progetto, per evitare conflitti di versione tra progetti diversi.

Quale parola chiave segue try per gestire un'eccezione in Python?

Risposta : except

Il blocco except viene eseguito quando nel blocco try viene sollevata un'eccezione corrispondente; il resto del try viene allora interrotto.

Perché scrivere with open('notes.txt') as f invece di f = open('notes.txt')?

Risposta : Il file viene chiuso automaticamente all'uscita dal blocco, anche in caso di errore

with usa un gestore di contesto: il file viene chiuso all'uscita dal blocco, anche se si verifica un errore.

Difficile

Che cosa restituisce la chiamata di una funzione che contiene la parola chiave yield?

Risposta : Un oggetto generatore, che produce i valori uno alla volta su richiesta

Una funzione con yield restituisce un generatore: il suo corpo viene eseguito solo quando si chiede il valore successivo.

Che cosa succede quando si chiama next(it) su un iteratore esaurito, senza valore predefinito?

Risposta : Solleva l'eccezione StopIteration

next() restituisce l'elemento successivo; se non ce ne sono più viene sollevata l'eccezione StopIteration, che segnala la fine dell'iterazione e che il ciclo for intercetta.

Che cos'è un decoratore in Python?

Risposta : Una funzione che riceve una funzione come argomento e restituisce una funzione modificata

Un decoratore si applica con @ sopra una funzione; esempio classico: un decoratore che misura la durata di una chiamata.

In CPython, l'implementazione di riferimento di Python, che cosa fa il GIL?

Risposta : Consente a un solo thread di eseguire bytecode Python alla volta

Il GIL è il lock dell'interprete CPython: un solo thread esegue bytecode Python alla volta, il che limita il parallelismo dei calcoli.

Che cosa fa la parola chiave await in una coroutine?

Risposta : Sospende la coroutine in attesa di un awaitable, senza bloccare l'event loop

await sospende la coroutine finché l'oggetto atteso non è pronto e, nel frattempo, l'event loop può eseguire altri task.

Che cosa fa l'interprete Python con un'annotazione di tipo come x: int = 'abc'?

Risposta : Niente: l'annotazione non influisce sull'esecuzione

Le annotazioni servono a strumenti come mypy e alla leggibilità; l'interprete non le verifica né le converte durante l'esecuzione.

Quale metodo speciale viene chiamato da len(obj)?

Risposta : __len__

len(obj) chiama il metodo __len__ definito nella classe dell'oggetto, che deve restituire un intero.

Qual è la differenza tra copy.copy e copy.deepcopy su una lista di liste?

Risposta : copy.copy duplica solo il primo livello; deepcopy duplica anche le sotto-liste

copy.copy crea un nuovo oggetto esterno, ma i sotto-oggetti restano condivisi; deepcopy duplica anche gli oggetti annidati.

Temi simili

Gioca ai quiz Python