Python RxPY v1 升级 v3 变化 Observable 与操作符新用法


发布日期 : 2023-03-02 00:47:37 UTC

访问量: 10 次浏览

RxPY 最新版本更新

在本教程中,我们使用的是 RxPY 版本 3 和 Python 版本 3.7.3。RxPY 版本 3 的工作方式与之前的版本有些不同,即 RxPY 版本 1。

在本章中,我们将讨论这两个版本之间的区别,并在更新 Python 和 RxPY 版本时需要做出的更改。

RxPY 中的 Observable

在 RxPy 版本 1 中,Observable 是一个独立的类。

使用 Observable 需要按照以下方式使用:

在 RxPy 版本 3 中,Observable 直接是 rx 包的一部分。

示例

import rx
rx.of(1,2,3,4,5,6,7,8,9,10)

在 RxPy 中的操作符

在版本 1 中,操作符是 Observable 类中的方法。例如,要使用操作符,我们必须导入 Observable,如下所示:

操作符是作为 Observable.operator 使用的,例如,如下所示:

Observable.of(1,2,3,4,5,6,7,8,9,10)\
   .filter(lambda i: i %2 == 0) \
   .sum() \
   .subscribe(lambda x: print("Value is {0}".format(x)))

在 RxPY 3版本中,运算符是函数,并且按照以下方式导入和使用

import rx
from rx import operators as ops
rx.of(1,2,3,4,5,6,7,8,9,10).pipe(
   ops.filter(lambda i: i %2 == 0),
   ops.sum()
).subscribe(lambda x: print("Value is {0}".format(x)))

使用 pipe() 方法链接操作符

在 RxPy 的第 1 版中,如果你必须在可观测对象上使用多个操作符,必须按照以下方式进行操作:

示例

from rx import Observable
Observable.of(1,2,3,4,5,6,7,8,9,10)\
   .filter(lambda i: i %2 == 0) \
   .sum() \
   .subscribe(lambda x: print("Value is {0}".format(x)))

但是,在 RxPY 的 3 版本中,您可以使用 pipe() 方法和多个操作符,如下所示:

示例

import rx
from rx import operators as ops
rx.of(1,2,3,4,5,6,7,8,9,10).pipe(
   ops.filter(lambda i: i %2 == 0),
   ops.sum()
).subscribe(lambda x: print("Value is {0}".format(x)))