RxPY - Operadores

Este capítulo explica sobre os operadores em RxPY em detalhes. Esses operadores incluem -

  • Trabalhando com Operadores
  • Operadores matemáticos
  • Operadores de transformação
  • Operadores de filtragem
  • Operadores de tratamento de erros
  • Operadores de serviços públicos
  • Operadores condicionais
  • Operadores de criação
  • Operadores conectáveis
  • Combinando operadores

O python reativo (Rx) tem quase muitos operadores, que facilitam a vida com a codificação do python. Você pode usar esses vários operadores juntos, por exemplo, ao trabalhar com strings, você pode usar mapear, filtrar e operadores de mesclagem.

Trabalhando com Operadores

Você pode trabalhar com vários operadores juntos usando o método pipe (). Este método permite encadear vários operadores juntos.

Aqui está um exemplo prático do uso de operadores -

test = of(1,2,3) // an observable
subscriber = test.pipe(
   op1(),
   op2(),
   op3()
)

No exemplo acima, criamos um método observável of () que leva os valores 1, 2 e 3. Agora, neste observável, você pode realizar uma operação diferente, usando qualquer número de operadores usando o método pipe (), conforme mostrado acima. A execução dos operadores continuará sequencialmente no observável dado.

Para trabalhar com operadores, primeiro importe-o conforme mostrado abaixo -

from rx import of, operators as op

Aqui está um exemplo prático -

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)))

No exemplo acima, há uma lista de números, da qual estamos filtrando números pares usando um operador de filtro e, posteriormente, adicionando-o usando um operador de redução.

Output

E:\pyrx>python testrx.py
Sum of Even numbers is 30

Aqui está uma lista de operadores, que vamos discutir -

  • Criação de observáveis
  • Operadores matemáticos
  • Operadores de transformação
  • Operadores de filtragem
  • Operadores de tratamento de erros
  • Operadores de serviços públicos
  • Conditional
  • Connectable
  • Combinando operadores

Criação de observáveis

A seguir estão os observáveis, vamos discutir na categoria Criação

Mostrar exemplos

Observável Descrição
crio Este método é usado para criar um observável.
vazio Este observável não produzirá nada e emitirá diretamente o estado completo.
Nunca Este método cria um observável que nunca alcançará o estado completo.
lançar Este método criará um observável que gerará um erro.
de_ Este método converterá a matriz ou objeto fornecido em um observável.
intervalo Este método fornecerá uma série de valores produzidos após um tempo limite.
somente Este método converterá determinado valor em um observável.
alcance Este método fornecerá um intervalo de inteiros com base na entrada fornecida.
repeat_value Este método criará um observável que repetirá o valor fornecido de acordo com a contagem fornecida.
começar Este método recebe uma função como entrada e retorna um valor observável que retornará o valor da função de entrada.
cronômetro Este método emitirá os valores em sequência após o tempo limite terminar.

Operadores matemáticos

Os operadores que vamos discutir na categoria de operadores matemáticos são os seguintes: -

Mostrar exemplos

Operador Descrição
média Este operador irá calcular a média a partir da fonte observável dada e produzir um observável que terá o valor médio.
concat Esse operador pegará dois ou mais observáveis ​​e receberá um único observável com todos os valores na sequência.
contagem

Este operador obtém um Observable com valores e o converte em um Observable que terá um único valor. A função de contagem assume a função de predicado como um argumento opcional.

A função é do tipo booleano e adicionará valor à saída somente se atender à condição.

max Este operador fornecerá um observável com valor máximo da fonte observável.
min Este operador fornecerá um valor observável com valor mínimo da fonte observável.
reduzir Este operador assume uma função chamada função acumuladora que é usada nos valores vindos da fonte observável e retorna os valores acumulados na forma de um observável, com um valor semente opcional passado para a função acumuladora.
soma Este operador retornará um observável com a soma de todos os valores dos observáveis ​​de origem.

Operadores de transformação

Os operadores que vamos discutir na categoria Operador de transformação são mencionados abaixo -

Mostrar exemplos

Operador Categoria
amortecedor Esse operador coletará todos os valores da fonte observável e os emitirá em intervalos regulares assim que a condição de limite fornecida for satisfeita.
ground_by Este operador agrupará os valores provenientes da fonte observável com base na função key_mapper fornecida.
mapa Este operador irá alterar cada valor da fonte observável em um novo valor com base na saída do mapper_func fornecido.
Varredura Este operador aplicará uma função de acumulador aos valores provenientes da fonte observável e retornará um observável com novos valores.

Operadores de filtragem

Os operadores que discutiremos na categoria de operador de filtragem são fornecidos abaixo -

Mostrar exemplos

Operador Categoria
debounce Este operador fornecerá os valores da fonte observável, até que o intervalo de tempo fornecido e ignore o restante do tempo.
distinto Este operador fornecerá todos os valores que são distintos da fonte observável.
element_at Este operador fornecerá um elemento da fonte observável para o índice fornecido.
filtro Este operador filtrará os valores da fonte observável com base na função de predicado fornecida.
primeiro Este operador fornecerá o primeiro elemento da fonte observável.
ignore_elements Este operador irá ignorar todos os valores observáveis ​​de origem e apenas executará chamadas para funções de callback completas ou com erro.
último Este operador fornecerá o último elemento da fonte observável.
pular Este operador retornará um observável que ignorará a primeira ocorrência de itens de contagem tomados como entrada.
skip_last Este operador retornará um observável que irá ignorar a última ocorrência de itens de contagem tomados como entrada.
levar Este operador fornecerá uma lista de valores de origem em ordem contínua com base na contagem fornecida.
take_last Este operador fornecerá uma lista de valores de origem em ordem contínua a partir do último com base na contagem fornecida.

Operadores de tratamento de erros

Os operadores que vamos discutir na categoria Operador de tratamento de erros são: -

Mostrar exemplos

Operador Descrição
pegar Este operador encerrará a fonte observável quando houver uma exceção.
tentar novamente Este operador tentará novamente na fonte observável quando houver um erro e, assim que a contagem de novas tentativas for concluída, ela será encerrada.

Operadores de serviços públicos

A seguir estão os operadores que discutiremos na categoria Operador de serviços públicos.

Mostrar exemplos

Operador Descrição
demora Este operador irá atrasar a emissão observável da fonte de acordo com a hora ou data fornecida.
materializar Este operador converterá os valores da fonte observável com os valores emitidos na forma de valores de notificação explícitos.
intervalo de tempo Este operador dará o tempo decorrido entre os valores da fonte observável.
tempo esgotado Este operador fornecerá todos os valores da fonte observáveis ​​após o tempo decorrido ou então irá disparar um erro.
timestamp Este operador anexará um carimbo de data / hora a todos os valores do observável de origem.

Operadores condicionais e booleanos

Os operadores que vamos discutir na categoria Operador condicional e booleano são os indicados abaixo -

Mostrar exemplos

Operador Descrição
todos Este operador verificará se todos os valores da fonte observável satisfazem a condição fornecida.
contém Este operador retornará um observável com o valor verdadeiro ou falso se o valor fornecido estiver presente e se for o valor da fonte observável.
default_if_empty Este operador retornará um valor padrão se a fonte observável estiver vazia.
sequência_equal Este operador irá comparar duas sequências de observáveis ​​ou uma matriz de valores e retornar um observável com o valor verdadeiro ou falso.
skip_until Este operador descartará os valores da fonte observável até que o segundo observável emita um valor.
skip_while Este operador retornará um observável com valores do observável de origem que satisfaça a condição passada.
pegue_até Este operador descartará os valores da fonte observável após o segundo observável emitir um valor ou ser encerrado.
take_while Este operador descartará os valores da fonte observáveis ​​quando a condição falhar.

Operadores conectáveis

Os operadores que vamos discutir na categoria Operador conectável são -

Mostrar exemplos

Operador Descrição
publicar Este método converterá o observável em um observável conectável.
ref_count Este operador tornará o observável um observável normal.
repetir Este método funciona de forma semelhante ao replaySubject. Este método retornará os mesmos valores, mesmo se o observável já tiver sido emitido e alguns dos assinantes estiverem atrasados ​​na assinatura.

Operadores de combinação

A seguir estão os operadores que discutiremos na categoria de operador de combinação.

Mostrar exemplos

Operador Descrição
combinar o último Este operador criará uma tupla para o observável dado como entrada.
fundir Este operador irá mesclar dados observáveis.
começar com Este operador pegará os valores fornecidos e adicionará no início do retorno observável de origem a sequência completa.
fecho eclair Este operador retorna um observável com valores em uma forma de tupla, que é formado tomando o primeiro valor do observável fornecido e assim por diante.