Rxpy 简明教程

RxPY - Operators

本章详细介绍了 RxPY 中的运算符。这些运算符包括 −

  1. Working with Operators

  2. Mathematical operators

  3. Transformation operators

  4. Filtering operators

  5. Error handling operators

  6. Utility operators

  7. Conditional operators

  8. Creation operators

  9. Connectable operators

  10. Combining operators

Reactive (Rx) python 几乎有大量的运算符,使用 python 编程可以轻松处理。你可以一起使用这些多个运算符,例如,在处理字符串时,你可以使用 map、filter、merge 运算符。

Working with Operators

你可以使用 pipe() 方法一起使用多个运算符。此方法允许将多个运算符链接在一起。

以下是用运算符的工作示例 −

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

在上述示例中,我们使用 of() 方法创建了一个可观察对象,其中包含值 1、2 和 3。现在,在该可观察对象上,你可以使用任意数量的运算符,使用上述 pipe() 方法执行不同的操作。将对给定可观察对象按顺序执行运算符。

要使用运算符,首先按如下所示进行导入 −

from rx import of, operators as op

以下是用例 −

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

在上述示例中,有一个数字列表,我们使用一个 filter 运算符从中过滤偶数,然后使用一个 reduce 运算符添加它。

Output

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

以下是我们将要讨论的运算符列表 −

  1. Creating Observables

  2. Mathematical operators

  3. Transformation operators

  4. Filtering operators

  5. Error handling operators

  6. Utility operators

  7. Conditional

  8. Connectable

  9. Combining operators

Creating Observables

以下是我们在“创建”类别中将讨论的可观察对象

Observable

Description

create

此方法用于创建可观察对象。

empty

此可观察对象不会输出任何内容,并直接发出完成状态。

never

此方法创建一个永远不会达到完成状态的可观察对象。

throw

此方法将创建将抛出错误的可观察对象。

from_

此方法将给定的数组或对象转换为可观察对象。

interval

此方法将在超时后提供一系列生成的值。

just

此方法将给定的值转换为可观察对象。

range

这种方法将基于给定的输入给出一个范围的整数。

repeat_value

此方法将创建一个可观察对象,该对象将根据给定的计数重复给定值。

start

此方法采用一个函数作为输入,并返回一个可观察对象,该对象将返回输入函数中的值。

timer

此方法将在超时完成之后按顺序发出值。

Mathematical operators

我们将在数学运算符类别中讨论的运算符如下:−

Operator

Description

average

此运算符将计算给定源可观察对象的平均值,并输出一个具有平均值的可观察对象。

concat

此运算符将采用两个或更多个可观察对象,并给出具有序列中所有值的单个可观察对象。

count

此运算符采用具有值的 Observable,并将其转换为具有单个值的 Observable。计数函数采用谓词函数作为可选参数。该函数为布尔类型,仅当满足条件时才将值添加到输出。

max

该运算符将给出源可观察对象中的最大值的可观察对象。

min

该运算符将给出源可观察对象中的最小值的可观察对象。

reduce

此运算符采用一个名为累加器函数的函数,该函数用于源可观察对象中的值,它以可观察对象的格式返回累加值,同时将可选的种子值传递给累加器函数。

sum

此运算符将返回源可观察对象中所有值的总和的可观察对象。

Transformation operators

我们在变换运算符类别中要讨论的运算符如下所示 −

Operator

Category

buffer

该运算符将收集源可观察对象中的所有值,并在给定的边界条件满足后以规则的时间间隔发出它们。

ground_by

此运算符将根据给定的 key_mapper 函数对源可观察对象中的值进行分组。

map

此运算符将根据给定映射函数的输出,将源可观察对象中的每个值更改为一个新值。

scan

此运算符将累加器函数应用于来自源可观察对象的值,并返回具有新值的可观察对象。

Filtering operators

我们将讨论的过滤操作符类别中的操作符如下:

Operator

Category

debounce

此操作符将给出来自源可观察对象的值,直到指定时间段为止,并忽略其余时间。

distinct

此操作符将给出与源可观察对象不同的所有值。

element_at

此操作符将根据给定的索引从源可观察对象提供一个元素。

filter

此操作符将根据给定的谓词函数从源可观察对象筛选值。

first

此操作符将给出源可观察对象的第一个元素。

ignore_elements

此操作符将忽略来自源可观察对象的所有值,而仅执行对完成或错误回调函数的调用。

last

此操作符将给出源可观察对象的最后一个元素。

skip

此操作符将返回一个可观察对象,该对象将跳过作为输入获取的计数项的首次出现。

skip_last

此操作符将返回一个可观察对象,该对象将跳过作为输入获取的计数项的最后一次出现。

take

此操作符将根据给定的计数连续有序地给出一系列源值。

take_last

此操作符将根据给定的计数从后往前连续有序地给出一系列源值。

Error handling operators

我们将讨论的错误处理操作符类别中的操作符包括:-

Operator

Description

catch

当出现异常时,此操作符将终止源可观察对象。

retry

当出现错误时,此操作符将在源可观察对象上重试,一旦重试次数完成,它将终止。

Utility operators

以下是我们将讨论的实用程序操作符类别中的操作符。

Operator

Description

delay

该操作符将根据给定的时间或日期延迟源可观察的排放。

materialize

该操作符将以显式通知值的形式转换来自源可观察的值。

time_interval

该操作符将给出来自源可观察的值之间经过的时间。

timeout

该操作符将在经过时间后给出来自源可观察的所有值,否则将触发错误。

timestamp

该操作符将给源可观察的所有值附加一个时间戳。

Conditional and Boolean operators

我们将在条件和布尔操作符类别中讨论的操作符如下所列:

Operator

Description

all

该操作符将检查源可观察的所有值是否满足给定的条件。

contains

该操作符将返回一个可观察的 true 或 false 值,如果存在给定值并且它是源可观察的值。

default_if_empty

如果源可观察为空,该操作符将返回一个默认值。

sequence_equal

该操作符将比较两个序列的可观察或一个值数组,并返回一个具有值 true 或 false 的可观察。

skip_until

该操作符将丢弃源可观察的值,直到第二个可观察发出一个值。

skip_while

该操作符将返回一个具有符合通过条件的源可观察的值的可观察。

take_until

该操作符将丢弃源可观察的值,直到第二个可观察发出一个值或终止。

take_while

当条件失败时,该操作符将丢弃源可观察的值。

Connectable Operators

我们将在可连接运算符类别中讨论的操作符是:

Operator

Description

publish

该方法将可观察转换为可连接可观察。

ref_count

该运算符将使可观察成为一个正常的可观察。

replay

此方法与 replaySubject 的工作方式类似。此方法将返回相同的值,即使 observable 已经播发,并且部分订阅者订阅较晚。

Combining Operators

以下是在组合操作程序类别中我们要讨论的操作程序。

Operator

Description

combine_latest

此操作程序会为给定的 observable 输入创建元组。

merge

此操作程序会合并给定的 observables。

start_with

此操作程序会取给定的值并添加到源 observable 返回的完整序列的开头。

zip

此操作程序返回一个 observable,其中的值以元组形式出现,该元组是通过取给定 observable 的第一个值等方式形成的。