Funzioni Incorporate¶
L’interprete Python ha un certo numero di funzioni e tipi incorporati che sono sempre disponibili. Sono elencati qui in ordine alfabetico.
Funzioni Incorporate |
|||
---|---|---|---|
- abs(x)¶
Return the absolute value of a number. The argument may be an integer, a floating-point number, or an object implementing
__abs__()
. If the argument is a complex number, its magnitude is returned.
- aiter(async_iterable)¶
Restituisce un asynchronous iterator per un asynchronous iterable. Equivalente a chiamare
x.__aiter__()
.Nota: A differenza di
iter()
,aiter()
non ha una variante con 2 argomenti.Added in version 3.10.
- all(iterable)¶
Restituisce
True
se tutti gli elementi dell”iterable sono veri (o se l’iterable è vuoto). Equivalente a:def all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator)¶
- awaitable anext(async_iterator, default)
Quando viene atteso, restituisce l’elemento successivo dall”asynchronous iterator dato, o default se fornito e l’iteratore è esaurito.
Questa è la variante asincrona del builtin
next()
, e si comporta in modo simile.Questo chiama il metodo
__anext__()
di async_iterator, restituendo un awaitable. Attendere questo restituisce il prossimo valore dell’iteratore. Se default è fornito, viene restituito se l’iteratore è esaurito, altrimenti viene sollevata l’eccezioneStopAsyncIteration
.Added in version 3.10.
- any(iterable)¶
Restituisce
True
se qualche elemento dell”iterable è vero. Se l’iterable è vuoto, restituisceFalse
. Equivalente a:def any(iterable): for element in iterable: if element: return True return False
- ascii(object)¶
Come
repr()
, restituisce una stringa contenente una rappresentazione stampabile di un oggetto, ma escapa i caratteri non ASCII nella stringa restituita darepr()
utilizzando le sequenze di escape\x
,\u
o\U
. Ciò genera una stringa simile a quella restituita darepr()
in Python 2.
- bin(x)¶
Converte un numero intero in una stringa binaria preceduta da «0b». Il risultato è un’espressione Python valida. Se x non è un oggetto
int
di Python, deve definire un metodo__index__()
che restituisce un intero. Alcuni esempi:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
Se si desidera il prefisso «0b» oppure no, è possibile utilizzare uno dei seguenti modi.
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')
Vedi anche
format()
per maggiori informazioni.
- class bool(object=False, /)¶
Return a Boolean value, i.e. one of
True
orFalse
. The argument is converted using the standard truth testing procedure. If the argument is false or omitted, this returnsFalse
; otherwise, it returnsTrue
. Thebool
class is a subclass ofint
(see Tipi Numerici — int, float, complex). It cannot be subclassed further. Its only instances areFalse
andTrue
(see Tipo Booleano - bool).Cambiato nella versione 3.7: The parameter is now positional-only.
- breakpoint(*args, **kws)¶
This function drops you into the debugger at the call site. Specifically, it calls
sys.breakpointhook()
, passingargs
andkws
straight through. By default,sys.breakpointhook()
callspdb.set_trace()
expecting no arguments. In this case, it is purely a convenience function so you don’t have to explicitly importpdb
or type as much code to enter the debugger. However,sys.breakpointhook()
can be set to some other function andbreakpoint()
will automatically call that, allowing you to drop into the debugger of choice. Ifsys.breakpointhook()
is not accessible, this function will raiseRuntimeError
.Per impostazione predefinita, il comportamento di
breakpoint()
può essere modificato con la variabile d’ambientePYTHONBREAKPOINT
. Vedisys.breakpointhook()
per i dettagli d’uso.Nota che ciò non è garantito se
sys.breakpointhook()
è stato sostituito.Solleva un evento di auditing
builtins.breakpoint
con l’argomentobreakpointhook
.Added in version 3.7.
- class bytearray(source=b'')
- class bytearray(source, encoding)
- class bytearray(source, encoding, errors)
Restituisce un nuovo array di byte. La classe
bytearray
è una sequenza mutabile di interi nell’intervallo 0 <= x < 256. Ha la maggior parte dei metodi usuali delle sequenze mutabili, descritti in Tipi di Sequenza Mutabili, oltre alla maggior parte dei metodi che il tipobytes
ha, vedi Operazioni su Bytes e Bytearray.Il parametro opzionale source può essere utilizzato per inizializzare l’array in diversi modi:
Se è una string, devi anche dare i parametri encoding (e facoltativamente, errors);
bytearray()
quindi converte la stringa in byte utilizzandostr.encode()
.Se è un integer, l’array avrà quella dimensione e sarà inizializzato con byte nulli.
Se è un oggetto conforme all”interfaccia buffer, un buffer di sola lettura dell’oggetto sarà utilizzato per inizializzare l’array di byte.
Se è un iterable, deve essere un iterable di interi nell’intervallo
0 <= x < 256
, che sono usati come contenuto iniziale dell’array.
Senza un argomento, viene creato un array di dimensione 0.
Vedi anche Tipi di sequenze binarie — bytes, bytearray, memoryview e Oggetti Bytearray.
- class bytes(source=b'')
- class bytes(source, encoding)
- class bytes(source, encoding, errors)
Restituisce un nuovo oggetto «bytes» che è una sequenza immutabile di interi nell’intervallo
0 <= x < 256
.bytes
è una versione immutabile dibytearray
– ha gli stessi metodi non mutanti e lo stesso comportamento di indicizzazione e slicing.Di conseguenza, gli argomenti del costruttore sono interpretati come per
bytearray()
.Gli oggetti byte possono essere creati anche con letterali, vedi String and Bytes literals.
Vedi anche Tipi di sequenze binarie — bytes, bytearray, memoryview, Oggetti bytes, e Operazioni su Bytes e Bytearray.
- callable(object)¶
Restituisce
True
se l’argomento object appare chiamabile,False
se non lo è. Se questo restituisceTrue
, è ancora possibile che una chiamata fallisca, ma se èFalse
, chiamare object non avrà mai successo. Nota che le classi sono chiamabili (chiamare una classe restituisce una nuova istanza); le istanze sono chiamabili se la loro classe ha un metodo__call__()
.Added in version 3.2: Questa funzione è stata prima rimossa in Python 3.0 e poi reintegrata in Python 3.2.
- chr(i)¶
Restituisce la stringa che rappresenta un carattere il cui punto di codice Unicode è l’intero i. Ad esempio,
chr(97)
restituisce la stringa'a'
, mentrechr(8364)
restituisce la stringa'€'
. Questo è l’inverso diord()
.L’intervallo valido per l’argomento va da 0 a 1.114.111 (0x10FFFF in base 16). Viene sollevata un’eccezione
ValueError
se i è fuori da questo intervallo.
- @classmethod¶
Trasforma un metodo in un metodo di classe.
Un metodo di classe riceve la classe come primo argomento implicito, proprio come un metodo di istanza riceve l’istanza. Per dichiarare un metodo di classe, utilizza questo idiom:
class C: @classmethod def f(cls, arg1, arg2): ...
La forma
@classmethod
è un decorator di funzione – vedi Function definitions per i dettagli.Un metodo di classe può essere chiamato sia sulla classe (come
C.f()
) sia su un’istanza (comeC().f()
). L’istanza è ignorata tranne che per la sua classe. Se un metodo di classe è chiamato per una classe derivata, l’oggetto della classe derivata è passato come primo argomento implicito.I metodi di classe sono diversi dai metodi statici di C++ o Java. Se desideri quelli, vedi
staticmethod()
in questa sezione. Per maggiori informazioni sui metodi di classe, vedi The standard type hierarchy.Cambiato nella versione 3.9: I metodi di classe ora possono avvolgere altri descrittori come
property()
.Cambiato nella versione 3.10: Class methods now inherit the method attributes (
__module__
,__name__
,__qualname__
,__doc__
and__annotations__
) and have a new__wrapped__
attribute.Deprecated since version 3.11, removed in version 3.13: I metodi di classe non possono più avvolgere altri descrittori come
property()
.
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶
Compila il source in un oggetto codice o AST. Gli oggetti codice possono essere eseguiti da
exec()
oeval()
. source può essere una stringa normale, una stringa di byte o un oggetto AST. Consulta la documentazione del moduloast
per informazioni su come lavorare con gli oggetti AST.L’argomento filename dovrebbe indicare il file da cui il codice è stato letto; passa un valore riconoscibile se non è stato letto da un file (
'<string>'
è comunemente utilizzato).L’argomento mode specifica il tipo di codice che deve essere compilato; può essere
'exec'
se source è costituito da una sequenza di istruzioni,'eval'
se è costituito da una singola espressione, o'single'
se è costituito da una singola istruzione interattiva (in quest’ultimo caso, le istruzioni di espressione che valutano a qualcosa di diverso daNone
saranno stampate).Gli argomenti opzionali flags e dont_inherit controllano quali opzioni del compilatore devono essere attivate e quali future features dovrebbero essere consentite. Se nessuno dei due è presente (o entrambi sono zero), il codice viene compilato con le stesse opzioni che influenzano il codice che chiama
compile()
. Se l’argomento flags è fornito e dont_inherit non è (o è zero) allora le opzioni del compilatore e le dichiarazioni future specificate dall’argomento flags vengono utilizzate in aggiunta a quelle che sarebbero comunque utilizzate. Se dont_inherit è un numero intero diverso da zero, l’argomento flags è quello – le opzioni del compilatore (future features e opzioni del compilatore) nel codice circostante sono ignorate.Le opzioni del compilatore e le dichiarazioni future sono specificate da bit che possono essere combinati con l’operatore OR bit a bit per specificare più opzioni. Il campo di bit richiesto per specificare una particolare future feature può essere trovato come attributo
compiler_flag
sull’istanza_Feature
nel modulo__future__
. Le flag del compilatore possono essere trovate nel moduloast
, con il prefissoPyCF_
.L’argomento optimize specifica il livello di ottimizzazione del compilatore; il valore predefinito
-1
seleziona il livello di ottimizzazione dell’interprete come indicato dalle opzioni-O
. I livelli espliciti sono0
(nessuna ottimizzazione;__debug__
è vero),1
(gli assert vengono rimossi,__debug__
è falso) o2
(anche i docstring vengono rimossi).Questa funzione solleva
SyntaxError
se la sorgente compilata non è valida, eValueError
se la sorgente contiene byte nulli.Se vuoi fare il parsing del codice Python nella sua rappresentazione AST, vedi
ast.parse()
.Solleva un evento di auditing
compile
con argomentisource
efilename
. Questo evento può essere sollevato anche dalla compilazione implicita.Nota
Quando si compila una stringa con codice multi-linea in modalità
'single'
o'eval'
, l’input deve essere terminato da almeno un carattere di nuova riga. Questo per facilitare il rilevamento delle istruzioni incomplete e complete nel modulocode
.Avvertimento
È possibile mandare in crash l’interprete Python con una stringa sufficientemente grande/complessa quando si compila in un oggetto AST a causa delle limitazioni della profondità dello stack del compilatore AST di Python.
Cambiato nella versione 3.2: Consentito l’uso delle newline di Windows e Mac. Inoltre, l’input in modalità
'exec'
non deve più terminare con una newline. Aggiunto il parametro optimize.Cambiato nella versione 3.5: In precedenza, veniva sollevata un’eccezione
TypeError
quando venivano incontrati byte nulli nella sorgente.Added in version 3.8:
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT
può ora essere passato in flags per abilitare il supporto perawait
,async for
easync with
al livello superiore.
- class complex(number=0, /)¶
- class complex(string, /)
- class complex(real=0, imag=0)
Convert a single string or number to a complex number, or create a complex number from real and imaginary parts.
Examples:
>>> complex('+1.23') (1.23+0j) >>> complex('-4.5j') -4.5j >>> complex('-1.23+4.5j') (-1.23+4.5j) >>> complex('\t( -1.23+4.5J )\n') (-1.23+4.5j) >>> complex('-Infinity+NaNj') (-inf+nanj) >>> complex(1.23) (1.23+0j) >>> complex(imag=-4.5) -4.5j >>> complex(-1.23, 4.5) (-1.23+4.5j)
If the argument is a string, it must contain either a real part (in the same format as for
float()
) or an imaginary part (in the same format but with a'j'
or'J'
suffix), or both real and imaginary parts (the sign of the imaginary part is mandatory in this case). The string can optionally be surrounded by whitespaces and the round parentheses'('
and')'
, which are ignored. The string must not contain whitespace between'+'
,'-'
, the'j'
or'J'
suffix, and the decimal number. For example,complex('1+2j')
is fine, butcomplex('1 + 2j')
raisesValueError
. More precisely, the input must conform to thecomplexvalue
production rule in the following grammar, after parentheses and leading and trailing whitespace characters are removed:complexvalue ::=
floatvalue
|floatvalue
("j" | "J") |floatvalue
sign
absfloatvalue
("j" | "J")If the argument is a number, the constructor serves as a numeric conversion like
int
andfloat
. For a general Python objectx
,complex(x)
delegates tox.__complex__()
. If__complex__()
is not defined then it falls back to__float__()
. If__float__()
is not defined then it falls back to__index__()
.If two arguments are provided or keyword arguments are used, each argument may be any numeric type (including complex). If both arguments are real numbers, return a complex number with the real component real and the imaginary component imag. If both arguments are complex numbers, return a complex number with the real component
real.real-imag.imag
and the imaginary componentreal.imag+imag.real
. If one of arguments is a real number, only its real component is used in the above expressions.If all arguments are omitted, returns
0j
.Il tipo complesso è descritto in Tipi Numerici — int, float, complex.
Cambiato nella versione 3.6: È consentito raggruppare le cifre con trattini bassi come nei letterali di codice.
Cambiato nella versione 3.8: Ricade su
__index__()
se__complex__()
e__float__()
non sono definiti.
- delattr(object, name)¶
Questo è un parente di
setattr()
. Gli argomenti sono un oggetto e una stringa. La stringa deve essere il nome di uno degli attributi dell’oggetto. La funzione elimina l’attributo denominato, a condizione che l’oggetto lo permetta. Ad esempio,delattr(x, 'foobar')
è equivalente adel x.foobar
. name non deve necessariamente essere un identificatore Python (vedisetattr()
).
- class dict(**kwarg)
- class dict(mapping, **kwarg)
- class dict(iterable, **kwarg)
Crea un nuovo dizionario. L’oggetto
dict
è la classe del dizionario. Vedidict
e Tipi di Mapping — dict per la documentazione su questa classe.Per altri contenitori vedere le classi integrate
list
,set
etuple
, così come il modulocollections
.
- dir()¶
- dir(object)
Senza argomenti, restituisce l’elenco dei nomi nell’attuale ambito locale. Con un argomento, tenta di restituire un elenco di attributi validi per quell’oggetto.
Se l’oggetto ha un metodo chiamato
__dir__()
, verrà chiamato e deve restituire l’elenco degli attributi. Questo consente agli oggetti che implementano una funzione personalizzata__getattr__()
o__getattribute__()
di personalizzare il modo in cuidir()
riporta i loro attributi.Se l’oggetto non fornisce
__dir__()
, la funzione fa del suo meglio per raccogliere informazioni dall’attributo__dict__
dell’oggetto, se definito, e dal suo tipo di oggetto. L’elenco risultante non è necessariamente completo e può essere inaccurato se l’oggetto ha una funzione personalizzata__getattr__()
.Il meccanismo predefinito di
dir()
si comporta diversamente con diversi tipi di oggetti, poiché tenta di produrre le informazioni più rilevanti, piuttosto che complete:Se l’oggetto è un oggetto modulo, l’elenco contiene i nomi degli attributi del modulo.
Se l’oggetto è un oggetto di tipo o classe, l’elenco contiene i nomi dei suoi attributi e, ricorsivamente, degli attributi delle sue basi.
Altrimenti, l’elenco contiene i nomi degli attributi dell’oggetto, i nomi degli attributi della sua classe e, ricorsivamente, degli attributi delle sue classi base.
L’elenco risultante è ordinato alfabeticamente. Ad esempio:
>>> import struct >>> dir() # show the names in the module namespace ['__builtins__', '__name__', 'struct'] >>> dir(struct) # show the names in the struct module ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] ... >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']
Nota
Poiché
dir()
è fornito principalmente come praticità per l’uso in un prompt interattivo, tenta di fornire un insieme di nomi interessante piuttosto che un insieme definito rigorosamente o coerentemente, e il suo comportamento dettagliato può cambiare tra le versioni. Ad esempio, gli attributi delle metaclassi non sono nella lista dei risultati quando l’argomento è una classe.
- divmod(a, b)¶
Take two (non-complex) numbers as arguments and return a pair of numbers consisting of their quotient and remainder when using integer division. With mixed operand types, the rules for binary arithmetic operators apply. For integers, the result is the same as
(a // b, a % b)
. For floating-point numbers the result is(q, a % b)
, where q is usuallymath.floor(a / b)
but may be 1 less than that. In any caseq * b + a % b
is very close to a, ifa % b
is non-zero it has the same sign as b, and0 <= abs(a % b) < abs(b)
.
- enumerate(iterable, start=0)¶
Restituisce un oggetto enumerate. iterable deve essere una sequenza, un iterator o qualche altro oggetto che supporti l’iterazione. Il metodo
__next__()
dell’iteratore restituito daenumerate()
restituisce una tupla contenente un conteggio (da start che per impostazione predefinita è 0) e i valori ottenuti iterando su iterable.>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
Equivalente a:
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
- eval(source, /, globals=None, locals=None)¶
- Parametri:
source (
str
| code object) – Un’espressione Python.globals (
dict
|None
) – Lo spazio dei nomi globale (predefinito:None
).locals (mapping |
None
) – Lo spazio dei nomi locale (predefinito:None
).
- Ritorna:
Il risultato dell’espressione valutata.
- solleva:
Gli errori di sintassi sono segnalati come eccezioni.
Avvertimento
This function executes arbitrary code. Calling it with user-supplied input may lead to security vulnerabilities.
L’argomento expression viene analizzato e valutato come un’espressione Python (tecnicamente parlando, una lista di condizioni) usando le mappature globals e locals come spazio dei nomi globale e locale. Se il dizionario globals è presente e non contiene un valore per la chiave
__builtins__
, viene inserito un riferimento al dizionario del modulo integratobuiltins
sotto quella chiave prima che expression venga analizzata. In questo modo puoi controllare quali builtins sono disponibili per il codice eseguito inserendo il tuo dizionario__builtins__
in globals prima di passarlo aeval()
. Se la mappatura locals è omessa, viene impostata al dizionario globals. Se entrambe le mappature sono omesse, l’espressione viene eseguita con i globals e i locals nell’ambiente in cui viene chiamatoeval()
. Nota, eval() avrà accesso solo agli nested scopes (non-locals) nell’ambiente di inclusione se sono già referenziati nello scope che chiamaeval()
(ad esempio tramite un’istruzionenonlocal
).Esempio:
>>> x = 1 >>> eval('x+1') 2
Questa funzione può essere utilizzata anche per eseguire oggetti codice arbitrari (come quelli creati da
compile()
). In questo caso, passa un oggetto codice invece di una stringa. Se l’oggetto codice è stato compilato con'exec'
come argomento mode, il valore restituito daeval()
saràNone
.Suggerimenti: l’esecuzione dinamica delle istruzioni è supportata dalla funzione
exec()
. Le funzioniglobals()
elocals()
restituiscono rispettivamente il dizionario globale e locale corrente, che possono essere utili da passare per l’uso da parte dieval()
oexec()
.Se la sorgente data è una stringa, allora gli spazi e le tabulazioni iniziali e finali vengono rimossi.
Vedi
ast.literal_eval()
per una funzione che può valutare in sicurezza stringhe con espressioni contenenti solo letterali.Solleva un evento di auditing
exec
con l’oggetto codice come argomento. Possono anche essere sollevati eventi di compilazione del codice.Cambiato nella versione 3.13: Gli argomenti globals e locals possono ora essere passati come parole chiave.
Cambiato nella versione 3.13: La semantica dello spazio dei nomi locals predefinito è stata modificata come descritto peril builtin
locals()
.
- exec(source, /, globals=None, locals=None, *, closure=None)¶
Avvertimento
This function executes arbitrary code. Calling it with user-supplied input may lead to security vulnerabilities.
Questa funzione supporta l’esecuzione dinamica di codice Python. source deve essere una stringa o un oggetto codice. Se è una stringa, la stringa viene analizzata come una suite di istruzioni Python che viene quindi eseguita (a meno che non si verifichi un errore di sintassi). [1] Se è un oggetto codice, viene semplicemente eseguito. In tutti i casi, il codice eseguito è previsto come input di file valido (vedi la sezione File input nel Manuale di Riferimento). Tieni presente che le istruzioni
nonlocal
,yield
ereturn
non possono essere utilizzate al di fuori delle definizioni delle funzioni anche all’interno del contesto del codice passato alla funzioneexec()
. Il valore restituito èNone
.In ogni caso, se vengono omesse le parti opzionali, il codice viene eseguito nell’ambito corrente. Se viene fornito solo globals, deve essere un dizionario (e non una sottoclasse del dizionario), che verrà utilizzato sia per le variabili globali che per quelle locali. Se vengono forniti globals e locals, vengono utilizzati rispettivamente per le variabili globali e locali. Se fornito, locals può essere qualsiasi oggetto di mappatura. Ricorda che a livello di modulo, globals e locals sono lo stesso dizionario.
Nota
Quando
exec
ottiene due oggetti separati come globals e locals, il codice verrà eseguito come se fosse incorporato in una definizione di classe. Ciò significa che le funzioni e le classi definite nel codice eseguito non potranno accedere alle variabili assegnate a livello di alto (poiché le variabili «di alto livello» sono trattate come variabili di classe in una definizione di classe).Se il dizionario globals non contiene un valore per la chiave
__builtins__
, viene inserito un riferimento al dizionario del modulo integratobuiltins
sotto quella chiave. In questo modo puoi controllare quali builtins sono disponibili per il codice eseguito inserendo il tuo dizionario__builtins__
in globals prima di passarlo aexec()
.The closure argument specifies a closure–a tuple of cellvars. It’s only valid when the object is a code object containing free (closure) variables. The length of the tuple must exactly match the length of the code object’s
co_freevars
attribute.Solleva un evento di auditing
exec
con l’oggetto codice come argomento. Possono anche essere sollevati eventi di compilazione del codice.Nota
Le funzioni integrate
globals()
elocals()
restituiscono rispettivamente l’attuale spazio dei nomi globale e locale, che possono essere utili da passare come secondo e terzo argomento aexec()
.Nota
Il locals predefinito agisce come descritto per la funzione
locals()
di seguito. Passa un dizionario locals esplicito se hai bisogno di vedere gli effetti del codice su locals dopo che la funzioneexec()
restituisce.Cambiato nella versione 3.11: Aggiunto il parametro closure.
Cambiato nella versione 3.13: Gli argomenti globals e locals possono ora essere passati come parole chiave.
Cambiato nella versione 3.13: La semantica dello spazio dei nomi locals predefinito è stata modificata come descritto peril builtin
locals()
.
- filter(function, iterable)¶
Costruisce un iteratore dagli elementi di iterable per i quali function è vera. iterable può essere una sequenza, un contenitore che supporta l’iterazione, o un iteratore. Se function è
None
, si assume la funzione identità, ovvero, tutti gli elementi di iterable che sono falsi vengono rimossi.Nota che
filter(function, iterable)
è equivalente all’espressione generatrice(item for item in iterable if function(item))
se function non èNone
e(item for item in iterable if item)
se function èNone
.Vedi
itertools.filterfalse()
per la funzione complementare che restituisce elementi di iterable per i quali function è falsa.
- class float(number=0.0, /)¶
- class float(string, /)
Return a floating-point number constructed from a number or a string.
Examples:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
If the argument is a string, it should contain a decimal number, optionally preceded by a sign, and optionally embedded in whitespace. The optional sign may be
'+'
or'-'
; a'+'
sign has no effect on the value produced. The argument may also be a string representing a NaN (not-a-number), or positive or negative infinity. More precisely, the input must conform to thefloatvalue
production rule in the following grammar, after leading and trailing whitespace characters are removed:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" digit ::= <a Unicode decimal digit, i.e. characters in Unicode general category Nd> digitpart ::=
digit
(["_"]digit
)* number ::= [digitpart
] "."digitpart
|digitpart
["."] exponent ::= ("e" | "E") [sign
]digitpart
floatnumber ::=number
[exponent
] absfloatvalue ::=floatnumber
|infinity
|nan
floatvalue ::= [sign
]absfloatvalue
La distinzione tra maiuscole e minuscole non è significativa, quindi, per esempio, «inf», «Inf», «INFINITY» e «iNfINity» sono tutte ortografie accettabili per l’infinito positivo.
Otherwise, if the argument is an integer or a floating-point number, a floating-point number with the same value (within Python’s floating-point precision) is returned. If the argument is outside the range of a Python float, an
OverflowError
will be raised.Per un oggetto Python generico
x
,float(x)
si delega ax.__float__()
. Se__float__()
non è definito, si ritorna a__index__()
.Se non viene fornito alcun argomento, viene restituito
0.0
.Il tipo float è descritto in Tipi Numerici — int, float, complex.
Cambiato nella versione 3.6: È consentito raggruppare le cifre con trattini bassi come nei letterali di codice.
Cambiato nella versione 3.7: The parameter is now positional-only.
Cambiato nella versione 3.8: Ritorna a
__index__()
se__float__()
non è definito.
- format(value, format_spec='')¶
Converte un value in una rappresentazione «formattata», come controllato da format_spec. L’interpretazione di format_spec dipenderà dal tipo dell’argomento value; tuttavia, esiste una sintassi di formattazione standard utilizzata dalla maggior parte dei tipi integrati: Format Specification Mini-Language.
Il format_spec predefinito è una stringa vuota che di solito dà lo stesso effetto di una chiamata a
str(value)
.Una chiamata a
format(value, format_spec)
viene tradotta intype(value).__format__(value, format_spec)
che bypassa il dizionario dell’istanza quando si cerca il metodo__format__()
del valore. Viene sollevata un’eccezioneTypeError
se la ricerca del metodo raggiungeobject
e format_spec non è vuoto, o se format_spec o il valore restituito non sono stringhe.Cambiato nella versione 3.4:
object().__format__(format_spec)
sollevaTypeError
se format_spec non è una stringa vuota.
- class frozenset(iterable=set())
Restituisce un nuovo oggetto
frozenset
, opzionalmente con elementi tratti da iterable.frozenset
è una classe integrata. Vedifrozenset
e Tipi di Insiemi — set, frozenset per la documentazione su questa classe.Per altri contenitori vedere le classi integrate
set
,list
,tuple
edict
, così come il modulocollections
.
- getattr(object, name)¶
- getattr(object, name, default)
Restituisce il valore dell’attributo nominato di object. name deve essere una stringa. Se la stringa è il nome di uno degli attributi dell’oggetto, il risultato è il valore di quell’attributo. Ad esempio,
getattr(x, 'foobar')
è equivalente ax.foobar
. Se l’attributo nominato non esiste, viene restituito default se fornito, altrimenti viene sollevata un’eccezioneAttributeError
. name non deve necessariamente essere un identificatore Python (vedisetattr()
).Nota
Poiché il private name mangling avviene al momento della compilazione, è necessario manipolare manualmente il nome di un attributo privato (attributi con due underscore iniziali) per recuperarlo con
getattr()
.
- globals()¶
Restituisce il dizionario che implementa lo spazio dei nomi del modulo corrente. Per il codice all’interno delle funzioni, questo viene impostato quando la funzione è definita e rimane lo stesso indipendentemente da dove la funzione viene chiamata.
- hasattr(object, name)¶
Gli argomenti sono un oggetto e una stringa. Il risultato è
True
se la stringa è il nome di uno degli attributi dell’oggetto,False
se non lo è. (Questo è implementato chiamandogetattr(object, name)
e verificando se solleva un’eccezioneAttributeError
o meno.)
- hash(object)¶
Restituisce il valore hash dell’oggetto (se ne ha uno). I valori hash sono interi. Vengono utilizzati per confrontare rapidamente le chiavi del dizionario durante una ricerca nel dizionario. I valori numerici che risultano uguali hanno lo stesso valore hash (anche se sono di tipi diversi, come nel caso di 1 e 1.0).
Nota
Per gli oggetti con metodi personalizzati
__hash__()
, si noti chehash()
tronca il valore restituito in base alla larghezza di bit della macchina ospite.
- help()¶
- help(request)
Avvia il sistema di aiuto integrato. (Questa funzione è destinata all’uso interattivo.) Se non viene fornito alcun argomento, il sistema di aiuto interattivo si avvia sulla console dell’interprete. Se l’argomento è una stringa, la stringa viene cercata come nome di un modulo, funzione, classe, metodo, parola chiave o argomento della documentazione, e viene stampata una pagina di aiuto sulla console. Se l’argomento è di qualsiasi altro tipo di oggetto, viene generata una pagina di aiuto sull’oggetto.
Si noti che se appare una barra (/) nell’elenco dei parametri di una funzione quando si invoca
help()
, significa che i parametri precedenti alla barra sono solo posizionali. Per ulteriori informazioni, vedere la FAQ sugli argomenti solo posizionali.Questa funzione viene aggiunta allo spazio dei nomi integrato dal modulo
site
.
- hex(x)¶
Converte un numero intero in una stringa esadecimale in minuscolo con prefisso «0x». Se x non è un oggetto
int
di Python, deve definire un metodo__index__()
che ritorna un intero. Alcuni esempi:>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Se si desidera convertire un numero intero in una stringa esadecimale maiuscola o minuscola con prefisso o meno, è possibile utilizzare uno dei seguenti modi:
>>> '%#x' % 255, '%x' % 255, '%X' % 255 ('0xff', 'ff', 'FF') >>> format(255, '#x'), format(255, 'x'), format(255, 'X') ('0xff', 'ff', 'FF') >>> f'{255:#x}', f'{255:x}', f'{255:X}' ('0xff', 'ff', 'FF')
Vedi anche
format()
per maggiori informazioni.Vedi anche
int()
per convertire una stringa esadecimale in un numero intero utilizzando una base di 16.Nota
Per ottenere una rappresentazione in stringa esadecimale di un float, utilizzare il metodo
float.hex()
.
- id(object)¶
Restituisce «l’identità» di un oggetto. Questo è un numero intero che è garantito essere unico e costante per questo oggetto durante la sua vita. Due oggetti con vite non sovrapposte possono avere lo stesso valore di
id()
.Dettaglio dell’implementazione di CPython: Questo è l’indirizzo dell’oggetto in memoria.
Solleva un evento di auditing
builtins.id
con l’argomentoid
.
- input()¶
- input(prompt)
Se l’argomento prompt è presente, viene scritto nello standard output senza un a capo finale. La funzione legge quindi una riga dall’input, la converte in una stringa (eliminando il newline finale) e la restituisce. Quando EOF viene letto, viene sollevata l’eccezione
EOFError
. Esempio:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Se il modulo
readline
è stato caricato, allorainput()
lo utilizzerà per fornire funzionalità di modifica elaborata delle righe e cronologia.Solleva un evento di auditing
builtins.input
con l’argomentoprompt
prima di leggere l’input.Solleva un evento di auditing
builtins.input/result
con il risultato dopo aver letto l’input con successo.
- class int(number=0, /)¶
- class int(string, /, base=10)
Return an integer object constructed from a number or a string, or return
0
if no arguments are given.Examples:
>>> int(123.45) 123 >>> int('123') 123 >>> int(' -12_345\n') -12345 >>> int('FACE', 16) 64206 >>> int('0xface', 0) 64206 >>> int('01110011', base=2) 115
If the argument defines
__int__()
,int(x)
returnsx.__int__()
. If the argument defines__index__()
, it returnsx.__index__()
. If the argument defines__trunc__()
, it returnsx.__trunc__()
. For floating-point numbers, this truncates towards zero.If the argument is not a number or if base is given, then it must be a string,
bytes
, orbytearray
instance representing an integer in radix base. Optionally, the string can be preceded by+
or-
(with no space in between), have leading zeros, be surrounded by whitespace, and have single underscores interspersed between digits.Una stringa intera in base-n contiene cifre, ciascuna rappresentante un valore da 0 a n-1. I valori 0-9 possono essere rappresentati da qualsiasi cifra decimale Unicode. I valori 10-35 possono essere rappresentati da
a
az
(oA
aZ
). La base predefinita è 10. Le basi consentite sono 0 e 2-36. Le stringhe in base 2, 8 e 16 possono essere opzionalmente precedute dai prefissi0b
/0B
,0o
/0O
o0x
/0X
, come con i letterali interi nel codice. Per la base 0, la stringa viene interpretata in modo simile a un letterale intero nel codice, nel senso che la base effettiva è 2, 8, 10 o 16 come determinato dal prefisso. La base 0 disabilita anche gli zeri iniziali:int('010', 0)
non è legale, mentreint('010')
eint('010', 8)
lo sono.Il tipo di intero è descritto in Tipi Numerici — int, float, complex.
Cambiato nella versione 3.4: Se base non è un’istanza di
int
e l’oggetto base ha un metodobase.__index__
, quel metodo viene chiamato per ottenere un intero per la base. Le versioni precedenti usavanobase.__int__
invece dibase.__index__
.Cambiato nella versione 3.6: È consentito raggruppare le cifre con trattini bassi come nei letterali di codice.
Cambiato nella versione 3.7: The first parameter is now positional-only.
Cambiato nella versione 3.8: Ritorna a
__index__()
se__int__()
non è definito.Cambiato nella versione 3.11: La delega a
__trunc__()
è deprecata.Cambiato nella versione 3.11:
int
string inputs and string representations can be limited to help avoid denial of service attacks. AValueError
is raised when the limit is exceeded while converting a string to anint
or when converting anint
into a string would exceed the limit. See the integer string conversion length limitation documentation.
- isinstance(object, classinfo)¶
Restituisce
True
se l’argomento object è un’istanza dell’argomento classinfo, o di una sua sottoclasse (diretta, indiretta o virtual). Se object non è un oggetto di quel tipo, la funzione restituisce sempreFalse
. Se classinfo è una tupla di oggetti di tipo (o ricorsivamente, altre tuple di questo tipo) o una Tipo Unione di più tipi, restituisceTrue
se object è un’istanza di uno qualsiasi dei tipi. Se classinfo non è un tipo o una tupla di tipi e tali tuple, viene sollevata un’eccezioneTypeError
.TypeError
può non essere sollevata per un tipo non valido se un controllo precedente ha successo.Cambiato nella versione 3.10: classinfo può essere una Tipo Unione.
- issubclass(class, classinfo)¶
Restituisce
True
se class è una sottoclasse (diretta, indiretta o virtual) di classinfo. Una classe è considerata una sottoclasse di se stessa. classinfo può essere una tupla di oggetti di classe (o ricorsivamente, altre tuple di questo tipo) o una Tipo Unione, nel qual caso restituisceTrue
se class è una sottoclasse di uno qualsiasi degli elementi in classinfo. In ogni altro caso, viene sollevata un’eccezioneTypeError
.Cambiato nella versione 3.10: classinfo può essere una Tipo Unione.
- iter(object)¶
- iter(object, sentinel)
Restituisce un oggetto iterator. Il primo argomento è interpretato in modo molto diverso a seconda della presenza del secondo argomento. Senza un secondo argomento, object deve essere un oggetto di raccolta che supporta il protocollo iterable (il metodo
__iter__()
), oppure deve supportare il protocollo della sequenza (il metodo__getitem__()
con argomenti interi a partire da0
). Se non supporta nessuno di questi protocolli, viene sollevata un’eccezioneTypeError
. Se il secondo argomento, sentinel, è dato, allora object deve essere un oggetto callable. L’iteratore creato in questo caso chiamerà object senza argomenti per ogni chiamata al suo metodo__next__()
; se il valore restituito è uguale a sentinel, viene sollevata un’eccezioneStopIteration
, altrimenti il valore verrà restituito.Vedi anche Tipi di Iteratore.
Una applicazione utile della seconda forma di
iter()
è costruire un lettore di blocchi. Ad esempio, leggere blocchi a larghezza fissa da un file di database binario fino a raggiungere la fine del file:from functools import partial with open('mydata.db', 'rb') as f: for block in iter(partial(f.read, 64), b''): process_block(block)
- len(s)¶
Restituisce la lunghezza (il numero di elementi) di un oggetto. L’argomento può essere una sequenza (come una stringa, bytes, tuple, list o range) o una collezione (come un dizionario, set o frozenset).
Dettaglio dell’implementazione di CPython:
len
sollevaOverflowError
su lunghezze maggiori disys.maxsize
, comerange(2 ** 100)
.
- class list
- class list(iterable)
Piuttosto che essere una funzione,
list
è effettivamente un tipo di sequenza mutabile, come documentato in Liste e Tipi di Sequenza — list, tuple, range.
- locals()¶
Restituisce un oggetto di mapping che rappresenta la tabella dei simboli locali corrente, con i nomi delle variabili come chiavi e i riferimenti attualmente associati come valori.
A livello di modulo, così come quando si usa
exec()
oeval()
con uno spazio dei nomi singolo, questa funzione restituisce lo stesso spazio dei nomi diglobals()
.A livello di classe, restituisce lo spazio dei nomi che sarà passato al costruttore della metaclasse.
Quando si usa
exec()
oeval()
con argomenti locali e globali separati, restituisce lo spazio dei nomi locale passato alla chiamata della funzione.In tutti i casi sopra menzionati, ogni chiamata a
locals()
in un determinato frame di esecuzione restituirà lo stesso oggetto di mapping. Le modifiche apportate tramite l’oggetto di mapping restituito dalocals()
saranno visibili come variabili locali assegnate, riassegnate o eliminate, e assegnare, riassegnare o eliminare variabili locali influenzerà immediatamente il contenuto dell’oggetto di mapping restituito.In un optimized scope (inclusi funzioni, generatori e coroutine), ogni chiamata a
locals()
restituisce invece un dizionario nuovo contenente i binding correnti delle variabili locali della funzione e qualsiasi riferimento a celle non locali. In questo caso, le modifiche ai binding dei nomi apportate tramite il dizionario restituito non vengono scritte nuovamente nelle corrispondenti variabili locali o nei riferimenti a celle non locali, e assegnare, riassegnare o eliminare variabili locali e riferimenti a celle non locali non influisce sul contenuto dei dizionari precedentemente restituiti.Chiamare
locals()
come parte di una comprensione in una funzione, generatore o coroutine equivale a chiamarlo nello scope contenente, eccetto che le variabili di iterazione inizializzate della comprensione saranno incluse. In altri scope, si comporta come se la comprensione stesse eseguendo come una funzione annidata.Chiamare
locals()
come parte di un’espressione del generatore equivale a chiamarlo in una funzione generatore annidata.Cambiato nella versione 3.12: Il comportamento di
locals()
in una comprensione è stato aggiornato come descritto in PEP 709.Cambiato nella versione 3.13: Come parte di PEP 667, sono ora definiti i semantici della modifica degli oggetti mapping restituiti da questa funzione. Il comportamento in ambiti ottimizzati è ora come descritto sopra. A parte essere definiti, il comportamento in altri ambiti rimane invariato rispetto alle versioni precedenti.
- map(function, iterable, *iterables)¶
Restituisce un iteratore che applica funzione a ogni elemento di iterabile, producendo i risultati. Se vengono forniti ulteriori argomenti iterable, function deve prendere altrettanti argomenti ed è applicata agli elementi di tutti gli iterabili in parallelo. Con più iterabili, l’iteratore si ferma quando l’iterabile più corto è esaurito. Per i casi in cui gli input della funzione sono già disposti in tuple di argomenti, vedere
itertools.starmap()
.
- max(iterable, *, key=None)¶
- max(iterable, *, default, key=None)
- max(arg1, arg2, *args, key=None)
Restituisce l’elemento più grande in un iterabile o il più grande tra due o più argomenti.
Se viene fornito un solo argomento posizionale, dovrebbe essere un iterable. Viene restituito l’elemento più grande dell’iterabile. Se vengono forniti due o più argomenti posizionali, viene restituito il più grande degli argomenti posizionali.
Ci sono due argomenti opzionali solo per parole chiave. L’argomento key specifica una funzione di ordinamento a un argomento, come quella utilizzata per
list.sort()
. L’argomento default specifica un oggetto da restituire se l’iterabile fornito è vuoto. Se l’iterabile è vuoto e default non è fornito, viene sollevata unaValueError
.Se ci sono più elementi massimali, la funzione restituisce il primo che incontra. Questo è coerente con altri strumenti che preservano la stabilità dell’ordinamento come
sorted(iterable, key=keyfunc, reverse=True)[0]
eheapq.nlargest(1, iterable, key=keyfunc)
.Cambiato nella versione 3.4: Aggiunto il parametro default solo per parole chiave.
Cambiato nella versione 3.8: L’argomento key può essere
None
.
- class memoryview(object)
Restituisce un oggetto «memory view» creato dall’argomento fornito. Vedi Memory Views per ulteriori informazioni.
- min(iterable, *, key=None)¶
- min(iterable, *, default, key=None)
- min(arg1, arg2, *args, key=None)
Restituisce l’elemento più piccolo in un iterabile o il più piccolo tra due o più argomenti.
Se viene fornito un solo argomento posizionale, dovrebbe essere un iterable. Viene restituito l’elemento più piccolo dell’iterabile. Se vengono forniti due o più argomenti posizionali, viene restituito il più piccolo degli argomenti posizionali.
Ci sono due argomenti opzionali solo per parole chiave. L’argomento key specifica una funzione di ordinamento a un argomento, come quella utilizzata per
list.sort()
. L’argomento default specifica un oggetto da restituire se l’iterabile fornito è vuoto. Se l’iterabile è vuoto e default non è fornito, viene sollevata unaValueError
.Se ci sono più elementi minimi, la funzione restituisce il primo che incontra. Questo è coerente con altri strumenti che preservano la stabilità dell’ordinamento come
sorted(iterable, key=keyfunc)[0]
eheapq.nsmallest(1, iterable, key=keyfunc)
.Cambiato nella versione 3.4: Aggiunto il parametro default solo per parole chiave.
Cambiato nella versione 3.8: L’argomento key può essere
None
.
- next(iterator)¶
- next(iterator, default)
Recupera l’elemento successivo dall”iterator chiamando il suo metodo
__next__()
. Se viene fornito default, esso viene restituito se l’iteratore è esaurito, altrimenti viene sollevata l’eccezioneStopIteration
.
- class object¶
This is the ultimate base class of all other classes. It has methods that are common to all instances of Python classes. When the constructor is called, it returns a new featureless object. The constructor does not accept any arguments.
- oct(x)¶
Converte un numero intero in una stringa ottale preceduta da «0o». Il risultato è un’istruzione valida in Python. Se x non è un oggetto Python
int
, deve definire un metodo__index__()
che restituisce un intero. Ad esempio:>>> oct(8) '0o10' >>> oct(-56) '-0o70'
Se vuoi convertire un numero intero in una stringa ottale con o senza il prefisso «0o», puoi usare uno dei seguenti modi.
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')
Vedi anche
format()
per maggiori informazioni.
- open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)¶
Apre file e restituisce un corrispondente file object. Se il file non può essere aperto, viene sollevata un’eccezione
OSError
. Vedi Lettura e Scrittura di File per ulteriori esempi su come utilizzare questa funzione.file è un path-like object che fornisce il percorso (assoluto o relativo alla directory di lavoro corrente) del file da aprire o un descrittore del file intero del file da incapsulare. (Se viene fornito un file descriptor, esso viene chiuso quando l’oggetto I/O restituito viene chiuso, a meno che closefd non sia impostato su
False
.)mode is an optional string that specifies the mode in which the file is opened. It defaults to
'r'
which means open for reading in text mode. Other common values are'w'
for writing (truncating the file if it already exists),'x'
for exclusive creation, and'a'
for appending (which on some Unix systems, means that all writes append to the end of the file regardless of the current seek position). In text mode, if encoding is not specified the encoding used is platform-dependent:locale.getencoding()
is called to get the current locale encoding. (For reading and writing raw bytes use binary mode and leave encoding unspecified.) The available modes are:Carattere
Significato
'r'
apri per lettura (predefinito)
'w'
apri per scrittura, troncando prima il file
'x'
apri per creazione esclusiva, fallendo se il file esiste già
'a'
apri per scrittura, aggiungendo alla fine del file se esiste
'b'
modalità binaria
't'
modalità testo (predefinito)
'+'
apri per aggiornamento (lettura e scrittura)
Il modo predefinito è
'r'
(aperto per la lettura di testo, sinonimo di'rt'
). I modi'w+'
e'w+b'
aprono il file e lo troncano. I modi'r+'
e'r+b'
aprono il file senza troncamento.Come menzionato nella Overview, Python distingue tra I/O binario e di testo. I file aperti in modalità binaria (incluso
'b'
nell’argomento mode) restituiscono il contenuto come oggettibytes
senza alcuna decodifica. In modalità testo (la predefinita, o quando't'
è incluso nell’argomento mode), il contenuto del file è restituito comestr
, con i byte decodificati utilizzando una codifica dipendente dalla piattaforma o quella specificata dall’opzione encoding se fornita.Nota
Python non dipende dalla nozione di file di testo del sistema operativo sottostante; tutta l’elaborazione è fatta da Python stesso e quindi è indipendente dalla piattaforma.
buffering è un intero opzionale utilizzato per impostare la politica di buffering. Passa 0 per disattivare il buffering (consentito solo in modalità binaria), 1 per selezionare il line buffering (utilizzabile solo durante la scrittura in modalità testo) e un intero > 1 per indicare la dimensione in byte di un buffer a dimensione fissa. Nota che specificare una dimensione del buffer in questo modo si applica per I/O binario bufferizzato, ma
TextIOWrapper
(cioè, i file aperti conmode='r+'
) avrebbe un altro buffering. Per disabilitare il buffering inTextIOWrapper
, considera l’uso del flagwrite_through
perio.TextIOWrapper.reconfigure()
. Quando non viene dato l’argomento buffering, la politica di buffering predefinita funziona come segue:I file binari sono bufferizzati in blocchi a dimensione fissa; la dimensione del buffer è scelta usando un’euristica che tenta di determinare la «dimensione del blocco» del dispositivo sottostante e ricade su
io.DEFAULT_BUFFER_SIZE
. In molti sistemi, il buffer sarà tipicamente lungo 4096 o 8192 byte.I file di testo «interattivi» (file per cui
isatty()
restituisceTrue
) utilizzano il line buffering. Altri file di testo utilizzano la politica descritta sopra per i file binari.
encoding è il nome della codifica utilizzata per decodificare o codificare il file. Questo dovrebbe essere usato solo in modalità testo. La codifica predefinita dipende dalla piattaforma (qualsiasi cosa restituita da
locale.getencoding()
), ma qualsiasi text encoding supportato da Python può essere utilizzato. Vedi il modulocodecs
per l’elenco delle codifiche supportate.errors è una stringa opzionale che specifica come devono essere gestiti gli errori di codifica e decodifica — questo non può essere usato in modalità binaria. È disponibile una varietà di gestori di errore standard (elencati sotto Error Handlers), anche se qualsiasi nome di gestione degli errori registrato con
codecs.register_error()
è anche valido. I nomi standard includono:'strict'
per sollevare un’eccezioneValueError
se c’è un errore di codifica. Il valore predefinito diNone
ha lo stesso effetto.'ignore'
ignora gli errori. Nota che ignorare gli errori di codifica può portare a perdita di dati.'replace'
fa sì che un marcatore di sostituzione (come'?'
) venga inserito dove ci sono dati malformati.'surrogateescape'
rappresenterà eventuali byte errati come unità di codice basso surrogate che vanno da U+DC80 a U+DCFF. Queste unità di codice surrogate verranno quindi trasformate di nuovo negli stessi byte quando il gestore di errorisurrogateescape
è utilizzato durante la scrittura dei dati. Questo è utile per elaborare file in una codifica sconosciuta.'xmlcharrefreplace'
è supportato solo durante la scrittura in un file. I caratteri non supportati dalla codifica sono sostituiti con il riferimento ai caratteri XML appropriato&#nnn;
.'backslashreplace'
sostituisce i dati malformati con le sequenze di escape con barra rovesciata di Python.'namereplace'
(anche questo supportato solo durante la scrittura) sostituisce i caratteri non supportati con le sequenze di escape\N{...}
.
newline determina come analizzare i caratteri di nuova riga dal flusso. Può essere
None
,''
,'\n'
,'\r'
e'\r\n'
. Funziona come segue:Quando si legge l’input dal flusso, se newline è
None
, è attivata la modalità di nuove righe universali. Le righe nell’input possono terminare con'\n'
,'\r'
o'\r\n'
e queste sono tradotte in'\n'
prima di essere restituite al chiamante. Se è''
, è attivata la modalità di nuove righe universali, ma le terminazioni di riga sono restituite al chiamante non tradotte. Se ha uno degli altri valori legali, le righe di input sono terminate solo dalla stringa data e la terminazione della riga è restituita al chiamante non tradotta.Quando si scrive l’output nel flusso, se newline è
None
, qualsiasi carattere'\n'
scritto è tradotto nel separatore di linea predefinito del sistema,os.linesep
. Se newline è''
o'\n'
, non avviene alcuna traduzione. Se newline è uno degli altri valori legali, qualsiasi carattere'\n'
scritto è tradotto nella stringa data.
Se closefd è
False
e viene fornito un descrittore di file anziché un nome file, il descrittore di file sottostante verrà mantenuto aperto quando il file viene chiuso. Se viene fornito un nome file, closefd deve essereTrue
(predefinito); altrimenti verrà generato un errore.Un apri-file personalizzato può essere utilizzato passando un callable come opener. Il descrittore di file sottostante per l’oggetto file viene quindi ottenuto chiamando opener con (file, flags). opener deve restituire un descrittore di file aperto (passando
os.open
come opener si ottiene una funzionalità simile a quella di passareNone
).Il file appena creato è non-inheritable.
Il seguente esempio utilizza il parametro dir_fd della funzione
os.open()
per aprire un file rispetto a una determinata directory:>>> import os >>> dir_fd = os.open('somedir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('spamspam.txt', 'w', opener=opener) as f: ... print('This will be written to somedir/spamspam.txt', file=f) ... >>> os.close(dir_fd) # don't leak a file descriptor
Il tipo di file object restituito dalla funzione
open()
dipende dalla modalità. Quandoopen()
è usato per aprire un file in modalità testo ('w'
,'r'
,'wt'
,'rt'
, ecc.), restituisce una sottoclasse diio.TextIOBase
(specificamenteio.TextIOWrapper
). Quando è usato per aprire un file in modalità binaria con buffering, la classe restituita è una sottoclasse diio.BufferedIOBase
. La classe esatta varia: in modalità di lettura binaria, restituisce unio.BufferedReader
; in modalità di scrittura binaria e di aggiunta binaria, restituisce unio.BufferedWriter
, e in modalità di lettura/scrittura, restituisce unio.BufferedRandom
. Quando il buffering è disabilitato, viene restituito il flusso raw, una sottoclasse diio.RawIOBase
,io.FileIO
.Vedi anche i moduli di gestione dei file, come
fileinput
,io
(dove è dichiaratoopen()
),os
,os.path
,tempfile
eshutil
.Raises an auditing event
open
with argumentspath
,mode
,flags
.Gli argomenti
mode
eflags
potrebbero essere stati modificati o dedotti dalla chiamata originale.Cambiato nella versione 3.3:
È stato aggiunto il parametro opener.
È stato aggiunto il modo
'x'
.IOError
veniva sollevato in passato, ora è un alias diOSError
.FileExistsError
viene ora sollevato se il file aperto in modalità di creazione esclusiva ('x'
) esiste già.
Cambiato nella versione 3.4:
Il file ora è non ereditabile.
Cambiato nella versione 3.5:
Se la chiamata di sistema viene interrotta e il gestore dei segnali non solleva un’eccezione, la funzione ora riprova la chiamata di sistema anziché sollevare un’eccezione
InterruptedError
(vedi PEP 475 per la motivazione).È stato aggiunto il gestore di errori
'namereplace'
.
Cambiato nella versione 3.6:
È stato aggiunto il supporto per accettare oggetti che implementano
os.PathLike
.Su Windows, l’apertura di un buffer di console può restituire una sottoclasse di
io.RawIOBase
diversa daio.FileIO
.
Cambiato nella versione 3.11: È stato rimosso il modo
'U'
.
- ord(c)¶
Data una stringa che rappresenta un carattere Unicode, restituisce un intero che rappresenta il punto di codice Unicode di quel carattere. Ad esempio,
ord('a')
restituisce l’intero97
eord('€')
(segno dell’Euro) restituisce8364
. Questo è l’inverso dichr()
.
- pow(base, exp, mod=None)¶
Restituisce base elevato a exp; se mod è presente, restituisce base elevato a exp, modulo mod (calcolato più efficientemente di
pow(base, exp) % mod
). La forma a due argomentipow(base, exp)
è equivalente all’utilizzo dell’operatore di potenza:base**exp
.The arguments must have numeric types. With mixed operand types, the coercion rules for binary arithmetic operators apply. For
int
operands, the result has the same type as the operands (after coercion) unless the second argument is negative; in that case, all arguments are converted to float and a float result is delivered. For example,pow(10, 2)
returns100
, butpow(10, -2)
returns0.01
. For a negative base of typeint
orfloat
and a non-integral exponent, a complex result is delivered. For example,pow(-9, 0.5)
returns a value close to3j
. Whereas, for a negative base of typeint
orfloat
with an integral exponent, a float result is delivered. For example,pow(-9, 2.0)
returns81.0
.Per gli operandi
int
base e exp, se mod è presente, mod deve essere anche di tipo intero e mod deve essere diverso da zero. Se mod è presente e exp è negativo, base deve essere relativamente primo a mod. In tal caso, viene restituitopow(inv_base, -exp, mod)
, dove inv_base è un inverso di base modulo mod.Ecco un esempio di calcolo di un inverso per
38
modulo97
:>>> pow(38, -1, mod=97) 23 >>> 23 * 38 % 97 == 1 True
Cambiato nella versione 3.8: Per gli operandi
int
, la forma a tre argomenti dipow
ora consente che il secondo argomento sia negativo, permettendo il calcolo degli inversi modulari.Cambiato nella versione 3.8: Consente argomenti di parola chiave. In passato, erano supportati solo argomenti posizionali.
- print(*objects, sep=' ', end='\n', file=None, flush=False)¶
Stampa objects sul flusso di testo file, separati da sep e seguiti da end. sep, end, file e flush, se presenti, devono essere dati come argomenti di parola chiave.
Tutti gli argomenti non di parola chiave sono convertiti in stringhe come fa
str()
e scritti nel flusso, separati da sep e seguiti da end. Sia sep che end devono essere stringhe; possono anche essereNone
, il che significa usare i valori predefiniti. Se non vengono dati objects,print()
scriverà solo end.L’argomento file deve essere un oggetto con un metodo
write(string)
; se non è presente o èNone
, verrà utilizzatosys.stdout
. Poiché gli argomenti stampati sono convertiti in stringhe di testo,print()
non può essere utilizzato con oggetti file in modalità binaria. Per questi, utilizzarefile.write(...)
invece.Il buffering dell’output è di solito determinato da file. Tuttavia, se flush è vero, il flusso viene forzato a essere svuotato.
Cambiato nella versione 3.3: Aggiunto il parametro di parola chiave flush.
- class property(fget=None, fset=None, fdel=None, doc=None)¶
Restituisce un attributo di proprietà.
fget è una funzione per ottenere il valore di un attributo. fset è una funzione per impostare il valore di un attributo. fdel è una funzione per eliminare il valore di un attributo. E doc crea una docstring per l’attributo.
Un uso tipico è definire un attributo gestito
x
:class C: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
Se c è un’istanza di C,
c.x
invocherà il getter,c.x = valore
invocherà il setter, edel c.x
il deleter.Se fornito, doc sarà la docstring dell’attributo property. Altrimenti, la property copierà la docstring di fget (se esiste). Questo rende possibile creare facilmente proprietà di sola lettura usando
property()
come un decorator:class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
Il decoratore
@property
trasforma il metodovoltage()
in un «getter» per un attributo di sola lettura con lo stesso nome, e imposta la docstring di voltage a «Get the current voltage.»- @getter¶
- @setter¶
- @deleter¶
Un oggetto property ha metodi
getter
,setter
, edeleter
utilizzabili come decoratori che creano una copia della property con la funzione di accesso corrispondente impostata sulla funzione decorata. Questo è spiegato al meglio con un esempio:class C: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Questo codice è esattamente equivalente al primo esempio. Assicurati di dare alle funzioni aggiuntive lo stesso nome della proprietà originale (
x
in questo caso.)L’oggetto property restituito ha anche gli attributi
fget
,fset
, efdel
corrispondenti agli argomenti del costruttore.
Cambiato nella versione 3.5: Le docstring degli oggetti property ora sono scrivibili.
- __name__¶
Attribute holding the name of the property. The name of the property can be changed at runtime.
Added in version 3.13.
- class range(stop)
- class range(start, stop, step=1)
Piuttosto che essere una funzione,
range
è in realtà un tipo di sequenza immutabile, come documentato in Intervalli e Tipi di Sequenza — list, tuple, range.
- repr(object)¶
Restituisce una stringa contenente una rappresentazione stampabile di un oggetto. Per molti tipi, questa funzione tenta di restituire una stringa che produrrebbe un oggetto con lo stesso valore quando passato a
eval()
; altrimenti, la rappresentazione è una stringa racchiusa tra parentesi angolari che contiene il nome del tipo dell’oggetto insieme a informazioni aggiuntive, spesso includendo il nome e l’indirizzo dell’oggetto. Una classe può controllare ciò che questa funzione restituisce per le sue istanze definendo un metodo__repr__()
. Sesys.displayhook()
non è accessibile, questa funzione genereràRuntimeError
.Questa classe ha una rappresentazione personalizzata che può essere valutata:
class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"Person('{self.name}', {self.age})"
- reversed(seq)¶
Restituisce un iterator invertito. seq deve essere un oggetto che ha un metodo
__reversed__()
o supporta il protocollo delle sequenze (il metodo__len__()
e il metodo__getitem__()
con argomenti interi a partire da0
).
- round(number, ndigits=None)¶
Restituisce number arrotondato a ndigits precisione dopo il punto decimale. Se ndigits è omesso o è
None
, restituisce l’intero più vicino al valore di input.Per i tipi built-in che supportano
round()
, i valori sono arrotondati al multiplo più vicino di 10 elevato alla potenza con segno meno ndigits; se due multipli sono ugualmente vicini, l’arrotondamento è fatto verso la scelta pari (così, per esempio, siaround(0.5)
cheround(-0.5)
sono0
, eround(1.5)
è2
). Qualsiasi valore intero è valido per ndigits (positivo, zero o negativo). Il valore restituito è un intero se ndigits è omesso o èNone
. Altrimenti, il valore restituito ha lo stesso tipo di number.Per un oggetto Python generico
number
,round
delega anumber.__round__
.Nota
Il comportamento di
round()
per i float può essere sorprendente: per esempio,round(2.675, 2)
dà2.67
invece del previsto2.68
. Questo non è un bug: è il risultato del fatto che la maggior parte delle frazioni decimali non può essere rappresentata esattamente come un float. Vedi Floating-Point Arithmetic: Issues and Limitations per maggiori informazioni.
- class set
- class set(iterable)
Restituisce un nuovo oggetto
set
, opzionalmente con elementi presi da iterable.set
è una classe built-in. Vediset
e Tipi di Insiemi — set, frozenset per la documentazione su questa classe.Per altri contenitori vedi le classi built-in
frozenset
,list
,tuple
, edict
, così come il modulocollections
.
- setattr(object, name, value)¶
Questo è il corrispettivo di
getattr()
. Gli argomenti sono un oggetto, una stringa e un valore arbitrario. La stringa può nominare un attributo esistente o un nuovo attributo. La funzione assegna il valore all’attributo, a condizione che l’oggetto lo consenta. Per esempio,setattr(x, 'foobar', 123)
è equivalente ax.foobar = 123
.name non deve essere necessariamente un identificatore Python come definito in Identifiers and keywords a meno che l’oggetto non scelga di far rispettare ciò, per esempio in un metodo personalizzato
__getattribute__()
o tramite__slots__
. Un attributo il cui nome non è un identificatore non sarà accessibile usando la notazione a punto, ma è accessibile tramitegetattr()
ecc.Nota
Poiché nome privato confuso avviene al momento della compilazione, bisogna manualmente confondere il nome di un attributo privato (attributi con due trattini bassi all’inizio) per impostarlo con
setattr()
.
- class slice(stop)¶
- class slice(start, stop, step=None)
Restituisce un oggetto slice che rappresenta l’insieme di indici specificati da
range(start, stop, step)
. Gli argomenti start e step predefiniti sonoNone
.- start¶
- stop¶
- step¶
Gli oggetti Slice hanno attributi dati di sola lettura
start
,stop
, estep
che restituiscono semplicemente i valori degli argomenti (o il loro valore predefinito). Non hanno altra funzionalità esplicita; tuttavia, sono usati da NumPy e da altri pacchetti di terze parti.
Gli oggetti Slice vengono anche generati quando viene utilizzata la sintassi di indicizzazione estesa. Per esempio:
a[start:stop:step]
oa[start:stop, i]
. Vediitertools.islice()
per una versione alternativa che restituisce un iterator.
- sorted(iterable, /, *, key=None, reverse=False)¶
Restituisce una nuova lista ordinata dagli elementi in iterable.
Ha due argomenti opzionali che devono essere specificati come argomenti per parola chiave.
key specifica una funzione di un argomento che viene utilizzata per estrarre una chiave di confronto da ciascun elemento in iterable (per esempio,
key=str.lower
). Il valore predefinito èNone
(confronta gli elementi direttamente).reverse è un valore booleano. Se impostato su
True
, gli elementi della lista vengono ordinati come se ogni confronto fosse inverso.Usa
functools.cmp_to_key()
per convertire una vecchia funzione cmp in una funzione key.La funzione built-in
sorted()
è garantita per essere stabile. Un ordinamento è stabile se garantisce di non modificare l’ordine relativo degli elementi che confronta uguali — questo è utile per ordinare in più passaggi (per esempio, ordinare per reparto, poi per grado di stipendio).L’algoritmo di ordinamento utilizza solo confronti
<
tra gli elementi. Sebbene la definizione di un metodo__lt__()
sia sufficiente per ordinare, PEP 8 raccomanda che tutte e sei le comparazioni ricche siano implementate. Questo aiuterà ad evitare bug quando si utilizza lo stesso dato con altri strumenti di ordinamento comemax()
che si basano su un metodo sottostante diverso. Implementare tutte e sei le comparazioni aiuta anche a evitare confusione per i confronti di tipo misto che possono chiamare il metodo riflesso__gt__()
.Per esempi di ordinamento e un breve tutorial sull’ordinamento, vedere Sorting Techniques.
- @staticmethod¶
Trasforma un metodo in un metodo statico.
Un metodo statico non riceve un argomento primo implicito. Per dichiarare un metodo statico, usa questo idiom:
class C: @staticmethod def f(arg1, arg2, argN): ...
La forma
@staticmethod
è un decorator di funzione – vedere Function definitions per dettagli.Un metodo statico può essere chiamato sia sulla classe (come
C.f()
) che su un’istanza (comeC().f()
). Inoltre, il descriptor del metodo statico è anche invocabile, quindi può essere utilizzato nella definizione della classe (comef()
).I metodi statici in Python sono simili a quelli trovati in Java o C++. Inoltre, vedere
classmethod()
per una variante utile per creare costruttori di classe alternativi.Come tutti i decoratori, è anche possibile chiamare
staticmethod
come una funzione regolare e fare qualcosa con il suo risultato. Questo è necessario in alcuni casi in cui è necessario un riferimento a una funzione dal corpo di una classe e si desidera evitare la trasformazione automatica a metodo istanza. Per questi casi, utilizza questo idiom:def regular_function(): ... class C: method = staticmethod(regular_function)
Per maggiori informazioni sui metodi statici, vedere The standard type hierarchy.
Cambiato nella versione 3.10: Static methods now inherit the method attributes (
__module__
,__name__
,__qualname__
,__doc__
and__annotations__
), have a new__wrapped__
attribute, and are now callable as regular functions.
- class str(object='')
- class str(object=b'', encoding='utf-8', errors='strict')
Restituisce una versione
str
di object. Vedistr()
per dettagli.str
è la class stringa built-in. Per informazioni generali sulle stringhe, vedere Tipo Sequenza di Testo — str.
- sum(iterable, /, start=0)¶
Somma start e gli elementi di un iterable da sinistra a destra e restituisce il totale. Gli elementi dell”iterable sono normalmente numeri, e il valore iniziale non può essere una stringa.
For some use cases, there are good alternatives to
sum()
. The preferred, fast way to concatenate a sequence of strings is by calling''.join(sequence)
. To add floating-point values with extended precision, seemath.fsum()
. To concatenate a series of iterables, consider usingitertools.chain()
.Cambiato nella versione 3.8: Il parametro start può essere specificato come argomento per parola chiave.
Cambiato nella versione 3.12: La somma di float è passata a un algoritmo che offre maggiore precisione e migliore commutatività sulla maggior parte delle build.
- class super¶
- class super(type, object_or_type=None)
Restituisce un oggetto proxy che delega le chiamate ai metodi a una classe genitrice o sorella di type. Questo è utile per accedere a metodi ereditati che sono stati sovrascritti in una classe.
L”object_or_type determina l’ordine di risoluzione del method resolution order da cercare. La ricerca inizia dalla classe subito dopo type.
For example, if
__mro__
of object_or_type isD -> B -> C -> A -> object
and the value of type isB
, thensuper()
searchesC -> A -> object
.The
__mro__
attribute of the class corresponding to object_or_type lists the method resolution search order used by bothgetattr()
andsuper()
. The attribute is dynamic and can change whenever the inheritance hierarchy is updated.Se il secondo argomento viene omesso, l’oggetto super restituito non è associato ad alcuna istanza. Se il secondo argomento è un oggetto,
isinstance(obj, type)
deve essere vero. Se il secondo argomento è un tipo,issubclass(type2, type)
deve essere vero (questo è utile per i classmethods).Quando viene chiamato direttamente all’interno di un metodo ordinario di una classe, entrambi gli argomenti possono essere omessi («zero-argomento
super()
»). In questo caso, type sarà la classe contenitrice e obj sarà il primo argomento della funzione immediatamente contenitrice (di solitoself
). (Questo significa chesuper()
con zero argomenti non funzionerà come previsto all’interno di funzioni nidificate, inclusi gli espressioni generatore, che creano implicitamente funzioni nidificate).Ci sono due casi d’uso tipici per super. In una gerarchia di classi con ereditarietà singola, super può essere usato per riferirsi alle classi genitori senza nominarle esplicitamente, rendendo così il codice più mantenibile. Questo uso è molto simile all’uso di super in altri linguaggi di programmazione.
Il secondo caso d’uso è supportare l’ereditarietà multipla cooperativa in un ambiente di esecuzione dinamico. Questo caso d’uso è unico per Python e non si trova nei linguaggi compilati staticamente o nei linguaggi che supportano solo l’ereditarietà singola. Questo rende possibile implementare «diagrammi a diamante» dove più classi base implementano lo stesso metodo. Un buon design richiede che tali implementazioni abbiano la stessa firma di chiamata in ogni caso (poiché l’ordine delle chiamate è determinato in fase di runtime, perché tale ordine si adatta ai cambiamenti nella gerarchia di classi e perché tale ordine può includere classi sorelle che sono sconosciute prima del runtime).
Per entrambi i casi d’uso, una chiamata tipica alla superclass sembra così:
class C(B): def method(self, arg): super().method(arg) # This does the same thing as: # super(C, self).method(arg)
Oltre alla ricerca di metodi,
super()
funziona anche per la ricerca degli attributi. Un possibile caso d’uso per questo è chiamare i descrittori in una classe genitore o sorella.Nota che
super()
è implementato come parte del processo di associazione per le ricerche di attributi punteggiate esplicite comesuper().__getitem__(name)
. Lo fa implementando il proprio metodo__getattribute__()
per la ricerca di classi in un ordine prevedibile che supporta l’ereditarietà multipla cooperativa. Di conseguenza,super()
non è definito per le ricerche implicite utilizzando dichiarazioni o operatori comesuper()[name]
.Nota anche che, a parte la forma con zero argomenti,
super()
non è limitato all’uso all’interno di metodi. La forma a due argomenti specifica esattamente gli argomenti e fa i riferimenti appropriati. La forma a zero argomenti funziona solo all’interno di una definizione di classe, poiché il compilatore riempie i dettagli necessari per recuperare correttamente la classe in fase di definizione, così come accedere all’istanza corrente per i metodi ordinari.Per suggerimenti pratici su come progettare classi cooperative usando
super()
, vedi guida all’uso di super().
- class tuple
- class tuple(iterable)
Piuttosto che essere una funzione,
tuple
è effettivamente un tipo di sequenza immutabile, come documentato in Tuple e Tipi di Sequenza — list, tuple, range.
- class type(object)¶
- class type(name, bases, dict, **kwds)
With one argument, return the type of an object. The return value is a type object and generally the same object as returned by
object.__class__
.La funzione incorporata
isinstance()
è raccomandata per testare il tipo di un oggetto, poiché prende in considerazione le sottoclassi.With three arguments, return a new type object. This is essentially a dynamic form of the
class
statement. The name string is the class name and becomes the__name__
attribute. The bases tuple contains the base classes and becomes the__bases__
attribute; if empty,object
, the ultimate base of all classes, is added. The dict dictionary contains attribute and method definitions for the class body; it may be copied or wrapped before becoming the__dict__
attribute. The following two statements create identicaltype
objects:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
See also:
Gli argomenti di parole chiave forniti alla forma a tre argomenti sono passati alla macchina adeguata della metaclasse (di solito
__init_subclass__()
) allo stesso modo degli argomenti di parole chiave in una definizione di classe (a parte metaclass).Vedi anche Customizing class creation.
Cambiato nella versione 3.6: Subclasses of
type
which don’t overridetype.__new__
may no longer use the one-argument form to get the type of an object.
- vars()¶
- vars(object)
Return the
__dict__
attribute for a module, class, instance, or any other object with a__dict__
attribute.Objects such as modules and instances have an updateable
__dict__
attribute; however, other objects may have write restrictions on their__dict__
attributes (for example, classes use atypes.MappingProxyType
to prevent direct dictionary updates).Senza argomento,
vars()
si comporta comelocals()
.Viene sollevata un’eccezione
TypeError
se viene specificato un oggetto ma non possiede un attributo__dict__
(ad esempio, se la sua classe definisce l’attributo__slots__
).Cambiato nella versione 3.13: Il risultato della chiamata a questa funzione senza argomento è stato aggiornato come descritto per il builtin
locals()
.
- zip(*iterables, strict=False)¶
Itera su più iterabili in parallelo, producendo tuple con un elemento da ciascun iterabile.
Esempio:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
Più formalmente:
zip()
restituisce un iteratore di tuple, dove la i-esima tupla contiene l”i-esimo elemento di ciascuno degli iterabili argomento.Un altro modo di pensare a
zip()
è che trasforma righe in colonne e colonne in righe. Questo è simile a trasporre una matrice.zip()
è pigro: gli elementi non saranno processati fino a quando l’iterabile non viene iterato, ad esempio, tramite un ciclofor
o avvolgendolo in unalist
.Una cosa da considerare è che gli iterabili passati a
zip()
potrebbero avere lunghezze diverse; a volte per progettazione e a volte a causa di un bug nel codice che ha preparato questi iterabili. Python offre tre approcci diversi per affrontare questo problema:Per impostazione predefinita,
zip()
si ferma quando l’iterabile più breve è esaurito. Ignorerà gli elementi rimanenti negli iterabili più lunghi, tagliando il risultato alla lunghezza dell’iterabile più corto:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
zip()
è spesso usato nei casi in cui si presume che gli iterabili abbiano la stessa lunghezza. In tali casi, è raccomandato usare l’opzionestrict=True
. Il suo output è lo stesso del normalezip()
:>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]
A differenza del comportamento predefinito, solleva un’eccezione
ValueError
se un iterabile è esaurito prima degli altri:>>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True): ... print(item) ... (0, 'fee') (1, 'fi') (2, 'fo') Traceback (most recent call last): ... ValueError: zip() argument 2 is longer than argument 1
Senza l’argomento
strict=True
, qualsiasi bug che risulti in iterabili di lunghezze diverse verrà silenziato, possibilmente manifestandosi come un bug difficile da trovare in un’altra parte del programma.Gli iterabili più corti possono essere imbottiti con un valore costante per rendere tutti gli iterabili della stessa lunghezza. Questo viene fatto da
itertools.zip_longest()
.
Casi limite: Con un singolo argomento iterabile,
zip()
restituisce un iteratore di 1-tuple. Senza argomenti, restituisce un iteratore vuoto.Suggerimenti e trucchi:
L’ordine di valutazione da sinistra a destra degli iterabili è garantito. Questo rende possibile un idioma per raggruppare una serie di dati in gruppi di lunghezza n usando
zip(*[iter(s)]*n, strict=True)
. Questo ripete lo stesso iteratoren
volte in modo che ogni tupla di output contenga il risultato din
chiamate all’iteratore. Questo ha l’effetto di dividere l’input in blocchi di lunghezza n.zip()
in combinazione con l’operatore*
può essere usato per separare una lista:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> list(zip(x, y)) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
Cambiato nella versione 3.10: Aggiunto l’argomento
strict
.
- __import__(name, globals=None, locals=None, fromlist=(), level=0)¶
Nota
Questa è una funzione avanzata che non è necessaria nella programmazione Python quotidiana, a differenza di
importlib.import_module()
.Questa funzione è invocata dalla dichiarazione
import
. Può essere sostituita (importando il modulobuiltins
e assegnando abuiltins.__import__
) al fine di cambiare la semantica della dichiarazioneimport
, ma farlo è fortemente sconsigliato poiché è di solito più semplice usare gli hook di importazione (vedi PEP 302) per raggiungere gli stessi obiettivi e non causa problemi con il codice che assume che l’implementazione di importazione predefinita sia in uso. L’uso diretto di__import__()
è anche sconsigliato a favore diimportlib.import_module()
.La funzione importa il modulo name, potenzialmente utilizzando i globals e locals dati per determinare come interpretare il nome in un contesto di pacchetto. La fromlist fornisce i nomi degli oggetti o sottomoduli che dovrebbero essere importati dal modulo specificato da name. L’implementazione standard non utilizza affatto il suo argomento locals e utilizza il suo argomento globals solo per determinare il contesto di pacchetto della dichiarazione
import
.level specifica se usare importazioni assolute o relative.
0
(il valore predefinito) significa eseguire solo importazioni assolute. Valori positivi per level indicano il numero di directory genitore da cercare relativi alla directory del modulo che chiama__import__()
(vedi PEP 328 per i dettagli).Quando la variabile name è della forma
package.module
, normalmente viene restituito il pacchetto di livello superiore (il nome fino al primo punto), non il modulo denominato name. Tuttavia, quando viene fornito un argomento fromlist non vuoto, viene restituito il modulo denominato name.Ad esempio, la dichiarazione
import spam
risulta in un bytecode simile al seguente codice:spam = __import__('spam', globals(), locals(), [], 0)
La dichiarazione
import spam.ham
risulta in questa chiamata:spam = __import__('spam.ham', globals(), locals(), [], 0)
Nota come
__import__()
restituisce qui il modulo di livello superiore perché questo è l’oggetto che viene associato a un nome dalla dichiarazioneimport
.D’altra parte, la dichiarazione
from spam.ham import eggs, sausage as saus
risulta in_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
Qui, il modulo
spam.ham
viene restituito da__import__()
. Da questo oggetto, vengono recuperati i nomi da importare e assegnati ai loro rispettivi nomi.Se vuoi semplicemente importare un modulo (potenzialmente all’interno di un pacchetto) per nome, usa
importlib.import_module()
.Cambiato nella versione 3.3: I valori negativi per level non sono più supportati (il che cambia anche il valore predefinito a 0).
Cambiato nella versione 3.9: Quando vengono utilizzate le opzioni della linea di comando
-E
o-I
, la variabile d’ambientePYTHONCASEOK
viene ora ignorata.
Note a piè di pagina