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.