RxPY - 操作员


本章详细解释了 RxPY 中的运算符。这些运算符包括 -

  • 与运营商合作
  • 数学运算符
  • 转型运营商
  • 过滤运算符
  • 错误处理运算符
  • 公用事业运营商
  • 条件运算符
  • 创建操作符
  • 可连接的操作员
  • 组合运算符

反应式 (Rx) python 几乎有很多运算符,使 python 编码变得轻松。您可以一起使用这多个运算符,例如,在处理字符串时,您可以使用映射、过滤器、合并运算符。

与运营商合作

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

这是使用运算符的工作示例 -

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

在上面的示例中,我们使用 of() 方法创建了一个 observable,它接受值 1、2 和 3。现在,在这个 observable 上,您可以使用 pipeline() 方法使用任意数量的运算符来执行不同的操作,如下所示多于。运算符的执行将在给定的可观察量上按顺序进行。

要使用运算符,首先将其导入,如下所示 -

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

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

输出

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

这是我们将要讨论的运算符列表 -

  • 创建可观察对象
  • 数学运算符
  • 转型运营商
  • 过滤运算符
  • 错误处理运算符
  • 公用事业运营商
  • 有条件的
  • 可连接
  • 组合运算符

创建可观察对象

以下是可观察的,我们将在创造类别中讨论

显示示例

可观察的 描述
创造 该方法用于创建可观察对象。
空的 这个 observable 不会输出任何东西,直接发出完整的状态。
绝不 此方法创建一个永远不会达到完整状态的可观察对象。
该方法将创建一个会抛出错误的可观察对象。
从_ 该方法会将给定的数组或对象转换为可观察的。
间隔 该方法将给出超时后产生的一系列值。
只是 该方法会将给定值转换为可观察值。
范围 此方法将根据给定的输入给出一系列整数。
重复值 此方法将创建一个可观察对象,该可观察对象将根据给定的计数重复给定的值。
开始 该方法接受一个函数作为输入并返回一个可观察量,该可观察量将从输入函数返回值。
计时器 该方法将在超时完成后按顺序发出值。

数学运算符

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

显示示例

操作员 描述
平均的 该运算符将从给定的源可观测值计算平均值,并输出具有平均值的可观测值。
连接 该运算符将接受两个或多个可观察量,并给出一个包含序列中所有值的可观察量。
数数

该运算符接收带有值的 Observable,并将其转换为具有单个值的 Observable。count 函数将谓词函数作为可选参数。

该函数是布尔类型,只有满足条件时才会向输出添加值。

最大限度 该运算符将给出一个具有源可观察量最大值的可观察量。
分钟 该运算符将给出一个具有源可观察值最小值的可观察值。
减少 该运算符接受一个称为 Accumulator 函数的函数,该函数用于来自源可观察值的值,并以可观察值的形式返回累积值,并将可选种子值传递给累加器函数。
该运算符将返回一个可观察量,其中包含源可观察量中所有值的总和。

转型运营商

我们将在转换运算符类别中讨论的运算符如下 -

显示示例

操作员 类别
缓冲 该运算符将从源可观察值中收集所有值,并在满足给定边界条件后定期发出它们。
地面依据 该运算符将根据给定的 key_mapper 函数对来自源可观察值的值进行分组。
地图 该运算符将根据给定的 mapper_func 的输出将源可观察值中的每个值更改为新值。
扫描 该运算符将对来自源可观察值的值应用累加器函数,并返回具有新值的可观察值。

过滤运算符

我们将在过滤运算符类别中讨论的运算符如下 -

显示示例

操作员 类别
去抖 该运算符将给出来自可观察源的值,直到给定的时间跨度并忽略其余时间。
清楚的 该运算符将给出与源可观察值不同的所有值。
元素_at 该运算符将为给定的索引给出来自可观察源的元素。
筛选 该运算符将根据给定的谓词函数过滤源可观察值中的值。
第一的 该运算符将给出可观察源中的第一个元素。
忽略元素 该运算符将忽略源可观察值中的所有值,并且仅执行对完成或错误回调函数的调用。
最后的 该运算符将给出可观察源中的最后一个元素。
跳过 该运算符将返回一个可观察值,该可观察值将跳过作为输入的计数项的第一次出现。
跳过最后一个 该运算符将返回一个可观察值,该可观察值将跳过最后一次出现的作为输入的计数项。
该运算符将根据给定的计数以连续顺序给出源值列表。
最后取 该运算符将根据给定的计数从最后一个连续顺序给出源值列表。

错误处理运算符

我们将在错误处理运算符类别中讨论的运算符是:-

显示示例

操作员 描述
抓住 当出现异常时,该运算符将终止源可观察对象。
重试 当出现错误时,该运算符将重试源可观察对象,并且一旦重试计数完成,它将终止。

公用事业运营商

以下是我们将在效用运算符类别中讨论的运算符。

显示示例

操作员 描述
延迟 该操作员将根据给定的时间或日期延迟源可观测发射。
物化 该运算符会将来自可观察源的值转换为以显式通知值形式发出的值。
时间间隔 该运算符将给出源可观察值之间经过的时间。
暂停 该运算符将在经过时间后给出源可观察值的所有值,否则将触发错误。
时间戳 该运算符会将时间戳附加到源可观察值中的所有值。

条件和布尔运算符

我们将在条件和布尔运算符类别中讨论的运算符如下所示 -

显示示例

操作员 描述
全部 该运算符将检查源可观察值中的所有值是否满足给定的条件。
包含 如果给定值存在并且它是源可观察值的值,则该运算符将返回值为 true 或 false 的可观察值。
如果为空则默认 如果源可观察量为空,则该运算符将返回默认值。
序列等于 该运算符将比较两个可观察值序列或值数组,并返回值为 true 或 false 的可观察值。
跳过直到 该运算符将丢弃源可观察量中的值,直到第二个可观察量发出值。
跳过同时 该运算符将返回一个可观察量,其中包含满足传递条件的源可观察量的值。
直到 在第二个 observable 发出值或终止后,该运算符将丢弃源 observable 中的值。
需要一段时间 当条件失败时,该运算符将丢弃源可观察值中的值。

可连接的运营商

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

显示示例

操作员 描述
发布 该方法会将可观察量转换为可连接的可观察量。
参考计数 该运算符将使可观察量成为普通可观察量。
重播 此方法的工作原理与 replaySubject 类似。即使可观察对象已经发出并且某些订阅者订阅较晚,此方法也将返回相同的值。

组合运算符

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

显示示例

操作员 描述
组合最新 该运算符将为作为输入给出的可观察值创建一个元组。
合并 该运算符将合并给定的可观察量。
从...开始 该运算符将接受给定值并在源可观察值的开头添加返回完整序列。
压缩 该运算符返回一个可观察量,其值采用元组形式,该元组形式是通过获取给定可观察量的第一个值等形成的。