RxPY - 操作符



本章详细解释了 RxPY 中的操作符。这些操作符包括:

  • 使用操作符
  • 数学运算符
  • 转换操作符
  • 过滤操作符
  • 错误处理操作符
  • 实用程序操作符
  • 条件操作符
  • 创建操作符
  • 可连接操作符
  • 组合操作符

Reactive (Rx) Python 拥有大量的操作符,使 Python 编码更加轻松。例如,在处理字符串时,您可以将 map、filter、merge 等多个操作符组合使用。

使用操作符

您可以使用 pipe() 方法将多个操作符组合在一起。此方法允许将多个操作符链接在一起。

这是一个使用操作符的工作示例:

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

在上面的示例中,我们使用 of() 方法创建了一个 Observable,该方法接受值 1、2 和 3。现在,您可以使用任何数量的操作符(如上所示使用 pipe() 方法)对这个 Observable 执行不同的操作。操作符的执行将按顺序在给定的 Observable 上进行。

要使用操作符,首先按照如下所示导入它:

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 操作符对其进行求和。

输出

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

以下是我们即将讨论的操作符列表:

  • 创建 Observables
  • 数学运算符
  • 转换操作符
  • 过滤操作符
  • 错误处理操作符
  • 实用程序操作符
  • 条件
  • 可连接的
  • 组合操作符

创建 Observables

以下是我们将在“创建”类别中讨论的 Observables:

显示示例

Observable 描述
create 此方法用于创建一个 Observable。
empty 此 Observable 不会输出任何内容,并直接发出 complete 状态。
never 此方法创建一个永远不会到达 complete 状态的 Observable。
throw 此方法将创建一个会抛出错误的 Observable。
from_ 此方法将给定的数组或对象转换为 Observable。
interval 此方法将在超时后产生一系列值。
just 此方法将给定值转换为 Observable。
range 此方法将根据给定的输入生成一系列整数。
repeat_value 此方法将创建一个 Observable,该 Observable 将根据给定的计数重复给定的值。
start 此方法接受一个函数作为输入,并返回一个 Observable,该 Observable 将返回来自输入函数的值。
timer 此方法将在超时后按顺序发出值。

数学运算符

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

显示示例

操作符 描述
average 此操作符将计算给定源 Observable 的平均值,并输出一个包含平均值的 Observable。
concat 此操作符将接收两个或多个 Observable,并生成一个包含所有值的单个 Observable,这些值按顺序排列。
count

此操作符接收一个包含值的 Observable,并将其转换为一个包含单个值的 Observable。count 函数可选择接受谓词函数作为参数。

该函数的类型为布尔型,只有当它满足条件时才会将值添加到输出。

max 此操作符将返回一个包含源 Observable 中最大值的 Observable。
min 此操作符将返回一个包含源 Observable 中最小值的 Observable。
reduce 此操作符接受一个名为 accumulator 的函数,该函数用于来自源 Observable 的值,并以 Observable 的形式返回累加值,并可以选择将 seed 值传递给 accumulator 函数。
sum 此操作符将返回一个包含所有源 Observable 值之和的 Observable。

转换操作符

我们将在转换操作符类别中讨论的操作符如下:

显示示例

操作符 类别
buffer 此操作符将收集来自源 Observable 的所有值,并在满足给定的边界条件后定期发出这些值。
group_by 此操作符将根据给定的 key_mapper 函数对来自源 Observable 的值进行分组。
map 此操作符将根据给定的 mapper_func 的输出将源 Observable 中的每个值更改为新值。
scan 此操作符将对来自源 Observable 的值应用累加器函数,并返回一个包含新值的新 Observable。

过滤操作符

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

显示示例

操作符 类别
debounce 此操作符将返回来自源 Observable 的值,直到给定的时间跨度,并忽略其余时间。
distinct 此操作符将返回源 Observable 中所有不同的值。
element_at 此操作符将返回源 Observable 中给定索引的元素。
filter 此操作符将根据给定的谓词函数过滤源 Observable 中的值。
first 此操作符将返回源 Observable 的第一个元素。
ignore_elements 此操作符将忽略来自源 Observable 的所有值,仅执行对 complete 或 error 回调函数的调用。
last 此操作符将返回源 Observable 的最后一个元素。
skip 此操作符将返回一个 Observable,该 Observable 将跳过作为输入的 count 个项目的第一次出现。
skip_last 此操作符将返回一个 Observable,该 Observable 将跳过作为输入的 count 个项目的最后一次出现。
take 此操作符将根据给定的计数返回源值列表,这些值按连续顺序排列。
take_last 此操作符将根据给定的计数返回源值列表,这些值从最后按连续顺序排列。

错误处理操作符

我们将在错误处理操作符类别中讨论的操作符如下:

显示示例

操作符 描述
catch 此操作符将在出现异常时终止源 Observable。
retry 此操作符将在发生错误时重试源 Observable,并在重试次数完成后终止。

实用程序操作符

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

显示示例

操作符 描述
delay 此操作符将根据给定的时间或日期延迟源 Observable 的发射。
materialize 此操作符将使用显式通知值的形式转换来自源 Observable 的值。
time_interval 此操作符将返回来自源 Observable 的值之间经过的时间。
timeout 此操作符将在经过时间后返回来自源 Observable 的所有值,否则将触发错误。
timestamp 此操作符将时间戳附加到来自源 Observable 的所有值。

条件和布尔运算符

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

显示示例

操作符 描述
all 此操作符将检查来自源 Observable 的所有值是否都满足给定的条件。
contains 如果给定值存在且是源 Observable 的值,则此操作符将返回一个包含 true 或 false 值的 Observable。
default_if_empty 如果源 Observable 为空,则此操作符将返回默认值。
sequence_equal 此操作符将比较两个 Observable 序列或一个值数组,并返回一个包含 true 或 false 值的 Observable。
skip_until 此操作符将丢弃来自源 Observable 的值,直到第二个 Observable 发出一个值。
skip_while 此操作符将返回一个 Observable,该 Observable 包含满足传递条件的源 Observable 的值。
take_until 此操作符将在第二个 Observable 发出一个值或终止后丢弃来自源 Observable 的值。
take_while 此操作符在条件失败时将丢弃来自源 Observable 的值。

可连接的操作符

我们将在可连接的操作符类别中讨论的操作符如下:

显示示例

操作符 描述
publish 此方法将 Observable 转换为可连接的 Observable。
ref_count 此操作符将 Observable 转换为普通的 Observable。
replay 此方法的工作方式类似于 replaySubject。即使 Observable 已经发出值并且一些订阅者延迟订阅,此方法也会返回相同的值。

组合操作符

以下是我们将在组合操作符类别中讨论的操作符。

显示示例

操作符 描述
combine_latest 此操作符将为给定为输入的 Observable 创建一个元组。
merge 此操作符将合并给定的 Observables。
start_with 此操作符将接收给定的值,并将其添加到源 Observable 的开头,然后返回完整的序列。
zip 此操作符返回一个包含元组形式值的 Observable,该元组是通过获取给定 Observable 的第一个值等等形成的。
广告
© . All rights reserved.