|
|
|
La libreria di riferimento di Python |
|
|
|
Il modulo operator esporta un insieme di funzioni
implementate in C che corrispondono agli operatori intrinseci di
Python. Per esempio, operator.add(x, y)
è equivalente
all'espressione x+y
. I nomi delle funzioni sono quelli usati
per i metodi speciali di classe; varianti senza il segno "__" in
testa o in coda vengono inoltre fornite per convenienza.
Le funzioni rientrano in categorie che eseguono confronti tra oggetti,
operazioni logiche, operazioni matematiche, operazioni sulle sequenze
e verifiche su tipi astratti.
Le funzioni di confronto degli oggetti sono utili per tutti gli
oggetti, e prendono il nome dall'operatore di confronto ricco che
supportano:
-
- Eseguono ``confronti ricchi'' tra a e b. Nello specifico,
lt(a, b)
è equivalente a a < b
,
le(a, b)
è equivalente a a <= b
,
eq(a, b)
è equivalente a a == b
,
ne(a, b)
è equivalente a a != b
,
gt(a, b)
è equivalente a a > b
e
ge(a, b)
è equivalente a a >= b
.
Notate che, diversamente dalla built-in cmp(), queste
funzioni possono restituire qualunque valore, che può venire
intrepretato o meno come booleano. Fate riferimento al
Python Reference Manual per maggiori
informazioni riguardo i confronti ricchi.
Nuovo nella versione 2.2.
Le operazioni logiche sono in genere applicabili a tutti gli oggetti e
supportano test della verità, test sull'identità e operazioni
booleane:
-
- Restituisce il risultato di not o. (Notate che non
esiste il metodo __not__() per oggetti istanze; solo il
nucleo dell'interprete definisce questa operazione. Il risultato viene
influenzato dai metodi __nonzero__() e __len__().)
-
Restituisce True se o è vero, altrimenti
False. Questo è equivalente all'uso del costruttore
bool.
-
Restituisce
a is b
. Verifica l'identità di oggetti.
Nuovo nella versione 2.3.
-
Restituisce
a is not b
. Verifica l'identità di oggetti.
Nuovo nella versione 2.3.
Le operazioni matematiche e bit per bit sono le più numerose:
-
- Restituisce il valore assoluto di o.
-
- Restituisce a
+
b, per a e b numerici.
-
- Restituisce l'and bit per bit di a e b.
-
- Restituisce a
/
b quando __future__.division
non viene effettuata. Questa è anche conosciuta come divisione ``classica''.
-
- Restituisce a
//
b.
Nuovo nella versione 2.2.
-
- Restitusce l'inverso bit per bit del numero o. Questo è
l'equivalente di
~
o. I nomi
invert() e __invert__() sono stati aggiunti in
Python 2.0.
-
- Restituisce lo scorrimento a sinistra di a di b bit.
-
- Restituisce a
%
b.
-
- Restituisce a
*
b, per i numeri a e b.
-
- Restituisce la negativizzazione di o.
-
- Restituisce l'or bit per bit di a e b.
-
- Restituisce il positivo di o.
-
- Restituisce a
**
b, per i numeri a e b.
Nuovo nella versione 2.3.
-
- Restituisce lo scorrimento a destra di a di b bit.
-
- Restituisce a
-
b.
-
- Restituisce a
/
b quando __future__.division
viene effettuata. Questa è anche conosciuta come divisione.
Nuovo nella versione 2.2.
-
- Restituisce l'or bit per bit esclusivo di a e b.
Le operazioni che lavorano con sequenze includono:
-
- Restituisce a
+
b per le sequenza a e b.
-
- Restituisce il risultato del test b
in
a.
Notate gli operatori inversi. La definizione __contains__()
è stata aggiunta in Python 2.0.
-
Restituisce il numero delle occorrenze di b in a.
-
- Rimuove il valore di a nell'indice b.
-
- Cancella la fetta di a dall'indice b all'indice c
-1
.
-
- Restituisce il valore di a nell'indice b.
-
- Restituisce la fetta di a dall'indice b all'indice c
-1
.
-
Restituisce l'indice della prima occorrenza di b in a.
-
- Restituisce a
*
b quando a è una sequenza e
b è un intero.
-
Deprecato dalla versione 2.0 di Python.
Al suo posto usate contains().
Alias per contains().
-
- Imposta il valore di a dall'indice b a c.
-
__setslice__( |
a, b, c, v) |
- Imposta la fetta di a dall'indice b all'indice
c
-1
alla sequenza v.
Il modulo operator definisce anche alcuni predicati per
verificare il tipo degli oggetti. Note:
Va fatta attenzione a non
interpretare erroneamente i risultati di queste funzioni; solo
isCallable() ha le caratteristiche per essere attendibile
con oggetti istanza. Per esempio:
>>> class C:
... pass
...
>>> import operator
>>> o = C()
>>> operator.isMappingType(o)
True
-
Deprecato dalla versione 2.0 di Python.
In sostituzione usate la funzione built-in callable().
Restituisce vero se l'oggetto o può venire chiamato come una
funzione, altrimenti falso. Vero viene restituito per funzioni, metodi
bound e unbound, classi di oggetti e oggetti istanze che supportino
il metodo __call__()
-
Restituisce vero se l'oggetto o supporta l'interfaccia di
mapping. Questo è vero per i dizionari e per tutti gli oggetti istanza.
Non esiste un metodo affidabile per verificare se una istanza
supporta l'intero protocollo di mapping fintanto che l'interfaccia
stessa non viene definita correttamente. Questo rende il test meno
utile di quanto altrimenti potrebbe essere.
-
Restituisce vero se l'oggetto o rappresenta un numero. Questo è
vero per tutti i tipi numerici implementati in C, e per tutti gli
oggetti istanza.
Non esiste un metodo affidabile per
verificare se una istanza supporta l'interfaccia numerica in modo
completo fintanto che la classe stessa non viene definita
correttamente.
Questo rende il test meno utile di quanto altrimenti potrebbe essere.
-
Restituisce valore vero se l'oggetto o supporta il protocollo
della sequenza.
Restituisce vero per tutti gli oggetti che definiscono una sequenza
con i metodi del linguaggio C e per tutti gli altri oggetti istanza.
Non esiste un metodo affidabile per verificare se un'istanza
supporta l'interfaccia per la sequenza in modo completo fintanto che
l'interfaccia stessa non viene definita correttamente. Questo rende
il test meno utile di quanto altrimenti potrebbe essere.
Esempio : Costruite un dizionario che mappi gli ordinali da
0
a 256
nei loro caratteri equivalenti.
>>> import operator
>>> d = {}
>>> keys = range(256)
>>> vals = map(chr, keys)
>>> map(operator.setitem, [d]*len(keys), keys, vals)
Il modulo operator definisce inoltre gli strumenti per
attributi generalizzati e per l'aspetto degli elementi. Questo è molto
utile per creare velocemente estrattori di campi come
argomenti per map(), sorted(),
itertools.groupby(), o per altre funzioni che aspettano
una funzione in argomento.
-
Restituisce un oggetto chiamabile che recupera attr dal proprio
operando. Dopo "f=attrgetter('name')", la chiamata "f(b)"
restituisce "b.name".
Nuovo nella versione 2.4.
-
Restituisce un oggetto chiamabile che recupera elemento dal
proprio operando. Dopo "f=itemgetter(2)" la chiamata
"f(b)" restituisce "f(b)".
Nuovo nella versione 2.4.
Esempi:
>>> from operator import *
>>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
>>> getcount = itemgetter(1)
>>> map(getcount, inventory)
[3, 2, 5, 1]
>>> sorted(inventory, key=getcount)
[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]
|
|
|
La libreria di riferimento di Python |
|
|
|
Release 2.3.4, documentation updated on 21. maggio 2005.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.