RxPY - Operatori
Questo capitolo spiega in dettaglio gli operatori in RxPY. Questi operatori includono:
- Lavorare con gli operatori
- Operatori matematici
- Operatori di trasformazione
- Operatori di filtraggio
- Operatori di gestione degli errori
- Operatori di servizi
- Operatori condizionali
- Operatori di creazione
- Operatori collegabili
- Combinare gli operatori
Python reattivo (Rx) ha quasi molti operatori, che semplificano la vita con il codice Python. È possibile utilizzare questi più operatori insieme, ad esempio, mentre si lavora con le stringhe è possibile utilizzare operatori di mappatura, filtro e unione.
Lavorare con gli operatori
Puoi lavorare con più operatori insieme usando il metodo pipe (). Questo metodo consente di concatenare più operatori insieme.
Ecco un esempio funzionante dell'utilizzo degli operatori:
test = of(1,2,3) // an observable
subscriber = test.pipe(
op1(),
op2(),
op3()
)
Nell'esempio sopra, abbiamo creato un osservabile utilizzando il metodo of () che accetta i valori 1, 2 e 3. Ora, su questo osservabile, puoi eseguire un'operazione diversa, utilizzando qualsiasi numero di operatori utilizzando il metodo pipe () come mostrato sopra. L'esecuzione degli operatori proseguirà sequenzialmente sull'osservabile dato.
Per lavorare con gli operatori, importalo prima come mostrato di seguito:
from rx import of, operators as op
Ecco un esempio funzionante:
testrx.py
from rx import of, operators as op
test = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
sub1 = test.pipe(
op.filter(lambda s: s%2==0),
op.reduce(lambda acc, x: acc + x)
)
sub1.subscribe(lambda x: print("Sum of Even numbers is {0}".format(x)))
Nell'esempio sopra, c'è un elenco di numeri, da cui filtriamo i numeri pari utilizzando un operatore di filtro e successivamente aggiungiamo utilizzando un operatore di riduzione.
Output
E:\pyrx>python testrx.py
Sum of Even numbers is 30
Ecco un elenco di operatori di cui parleremo:
- Creazione di osservabili
- Operatori matematici
- Operatori di trasformazione
- Operatori di filtraggio
- Operatori di gestione degli errori
- Operatori di servizi
- Conditional
- Connectable
- Combinare gli operatori
Creazione di osservabili
Di seguito sono riportati gli osservabili, che discuteremo nella categoria Creazione
Osservabile | Descrizione |
---|---|
creare | Questo metodo viene utilizzato per creare un osservabile. |
vuoto | Questo osservabile non produrrà nulla ed emetterà direttamente lo stato completo. |
mai | Questo metodo crea un osservabile che non raggiungerà mai lo stato completo. |
gettare | Questo metodo creerà un osservabile che genererà un errore. |
a partire dal_ | Questo metodo convertirà l'array o l'oggetto dato in un osservabile. |
intervallo | Questo metodo darà una serie di valori prodotti dopo un timeout. |
appena | Questo metodo convertirà il valore dato in un osservabile. |
gamma | Questo metodo fornirà un intervallo di numeri interi in base all'input fornito. |
repeat_value | Questo metodo creerà un osservabile che ripeterà il valore dato in base al conteggio. |
inizio | Questo metodo accetta una funzione come input e restituisce un osservabile che restituirà un valore dalla funzione di input. |
Timer | Questo metodo emetterà i valori in sequenza al termine del timeout. |
Operatori matematici
Gli operatori di cui parleremo nella categoria Operatore matematico sono i seguenti: -
Operatore | Descrizione |
---|---|
media | Questo operatore calcolerà la media dalla sorgente osservabile data e produrrà un osservabile che avrà il valore medio. |
concat | Questo operatore accetterà due o più osservabili e ne darà una singola con tutti i valori nella sequenza. |
contare | Questo operatore accetta un osservabile con valori e lo converte in un osservabile che avrà un unico valore. La funzione count accetta la funzione predicato come argomento opzionale. La funzione è di tipo booleano e aggiungerà valore all'output solo se soddisfa la condizione. |
max | Questo operatore darà un osservabile con il valore massimo dalla sorgente osservabile. |
min | Questo operatore darà un osservabile con valore minimo dalla sorgente osservabile. |
ridurre | Questo operatore accetta una funzione chiamata funzione accumulator che viene utilizzata sui valori provenienti dalla sorgente osservabile e restituisce i valori accumulati sotto forma di osservabile, con un valore seed opzionale passato alla funzione accumulator. |
somma | Questo operatore restituirà un osservabile con la somma di tutti i valori delle osservabili di origine. |
Operatori di trasformazione
Gli operatori di cui parleremo nella categoria Operatore di trasformazione sono menzionati di seguito:
Operatore | Categoria |
---|---|
buffer | Questo operatore raccoglierà tutti i valori dalla sorgente osservabile e li emetterà a intervalli regolari una volta soddisfatta la data condizione al contorno. |
ground_by | Questo operatore raggrupperà i valori provenienti dalla sorgente osservabile in base alla funzione key_mapper data. |
carta geografica | Questo operatore cambierà ogni valore dalla sorgente osservabile in un nuovo valore basato sull'output di mapper_func fornito. |
scansione | Questo operatore applicherà una funzione accumulatore ai valori provenienti dalla sorgente osservabile e restituirà un osservabile con nuovi valori. |
Operatori di filtraggio
Gli operatori di cui parleremo nella categoria Operatori di filtraggio sono riportati di seguito:
Operatore | Categoria |
---|---|
antirimbalzo | Questo operatore fornirà i valori dalla sorgente osservabile, fino al periodo di tempo specificato e ignorerà il resto del tempo. |
distinto | Questo operatore darà tutti i valori che sono distinti dalla fonte osservabile. |
element_at | Questo operatore fornirà un elemento dalla fonte osservabile per l'indice dato. |
filtro | Questo operatore filtrerà i valori dalla sorgente osservabile in base alla funzione del predicato fornita. |
primo | Questo operatore fornirà il primo elemento osservabile dalla sorgente. |
ignore_elements | Questo operatore ignorerà tutti i valori dalla fonte osservabile ed eseguirà solo chiamate per completare o generare errori nelle funzioni di callback. |
scorso | Questo operatore fornirà l'ultimo elemento dalla sorgente osservabile. |
Salta | Questo operatore restituirà un osservabile che salterà la prima occorrenza degli elementi di conteggio presi come input. |
skip_last | Questo operatore restituirà un osservabile che salterà l'ultima occorrenza degli elementi di conteggio presi come input. |
prendere | Questo operatore fornirà un elenco di valori di origine in ordine continuo in base al conteggio fornito. |
take_last | Questo operatore fornirà un elenco di valori di origine in ordine continuo dall'ultimo in base al conteggio fornito. |
Operatori di gestione degli errori
Gli operatori di cui parleremo nella categoria Operatore di gestione degli errori sono: -
Operatore | Descrizione |
---|---|
catturare | Questo operatore terminerà la sorgente osservabile quando c'è un'eccezione. |
riprova | Questo operatore riproverà sull'origine osservabile quando si verifica un errore e una volta terminato il conteggio dei tentativi terminerà. |
Operatori di servizi
I seguenti sono gli operatori di cui discuteremo nella categoria Operatore di utilità.
Operatore | Descrizione |
---|---|
ritardo | Questo operatore ritarderà l'emissione osservabile della fonte in base all'ora o alla data fornita. |
materializzarsi | Questo operatore convertirà i valori dalla sorgente osservabile con i valori emessi sotto forma di valori di notifica esplicita. |
Intervallo di tempo | Questo operatore fornirà il tempo trascorso tra i valori osservabili dalla sorgente. |
tempo scaduto | Questo operatore fornirà tutti i valori dalla sorgente osservabili dopo il tempo trascorso oppure attiverà un errore. |
timestamp | Questo operatore allegherà un timestamp a tutti i valori dalla fonte osservabile. |
Operatori condizionali e booleani
Gli operatori di cui parleremo nella categoria Operatore condizionale e booleano sono i seguenti:
Operatore | Descrizione |
---|---|
tutti | Questo operatore verificherà se tutti i valori della sorgente osservabile soddisfano la condizione data. |
contiene | Questo operatore restituirà un osservabile con il valore vero o falso se il valore dato è presente e se è il valore della sorgente osservabile. |
default_if_empty | Questo operatore restituirà un valore predefinito se l'osservabile di origine è vuoto. |
sequenza_equal | Questo operatore confronterà due sequenze di osservabili o una matrice di valori e restituirà un'osservabile con il valore vero o falso. |
skip_until | Questo operatore scarterà i valori dalla sorgente osservabile fino a quando la seconda osservabile non emetterà un valore. |
skip_ while | Questo operatore restituirà un osservabile con valori dalla sorgente osservabile che soddisfa la condizione passata. |
take_until | Questo operatore scarterà i valori dalla sorgente osservabile dopo che il secondo osservabile emette un valore o viene terminato. |
prendere_tempo | Questo operatore scarterà i valori dalla fonte osservabile quando la condizione fallisce. |
Operatori collegabili
Gli operatori di cui parleremo nella categoria Operatore collegabile sono:
Operatore | Descrizione |
---|---|
pubblicare | Questo metodo convertirà l'osservabile in un osservabile collegabile. |
ref_count | Questo operatore renderà l'osservabile una normale osservabile. |
replay | Questo metodo funziona in modo simile a replaySubject. Questo metodo restituirà gli stessi valori, anche se l'osservabile ha già emesso e alcuni degli abbonati sono in ritardo nella sottoscrizione. |
Combinazione di operatori
I seguenti sono gli operatori di cui parleremo nella categoria Operatore di combinazione.
Operatore | Descrizione |
---|---|
combinare_latest | Questo operatore creerà una tupla per l'osservabile dato come input. |
unire | Questo operatore unirà dati osservabili. |
iniziare con | Questo operatore prenderà i valori dati e aggiungerà all'inizio della sorgente osservabile per restituire l'intera sequenza. |
cerniera lampo | Questo operatore restituisce un osservabile con valori in una forma tupla che è formata prendendo il primo valore dell'osservabile dato e così via. |