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 类似。即使可观察对象已经发出并且某些订阅者订阅较晚,此方法也将返回相同的值。 |
组合运算符
以下是我们将在组合运算符类别中讨论的运算符。
操作员 | 描述 |
---|---|
组合最新 | 该运算符将为作为输入给出的可观察值创建一个元组。 |
合并 | 该运算符将合并给定的可观察量。 |
从...开始 | 该运算符将接受给定值并在源可观察值的开头添加返回完整序列。 |
压缩 | 该运算符返回一个可观察量,其值采用元组形式,该元组形式是通过获取给定可观察量的第一个值等形成的。 |