RxPY - Nhà khai thác
Chương này giải thích chi tiết về các toán tử trong RxPY. Các toán tử này bao gồm -
- Làm việc với các nhà điều hành
- Toán tử toán học
- Toán tử chuyển đổi
- Lọc toán tử
- Các toán tử xử lý lỗi
- Các nhà khai thác tiện ích
- Toán tử có điều kiện
- Toán tử tạo
- Các toán tử có thể kết nối
- Kết hợp các toán tử
Reactive (Rx) python hầu như có rất nhiều toán tử, điều này làm cho cuộc sống trở nên dễ dàng với việc mã hóa python. Bạn có thể sử dụng nhiều toán tử này cùng nhau, ví dụ, trong khi làm việc với chuỗi, bạn có thể sử dụng các toán tử ánh xạ, lọc, hợp nhất.
Làm việc với các nhà điều hành
Bạn có thể làm việc với nhiều toán tử cùng nhau bằng cách sử dụng phương thức pipe (). Phương pháp này cho phép xâu chuỗi nhiều toán tử lại với nhau.
Đây là một ví dụ hoạt động của việc sử dụng các toán tử -
test = of(1,2,3) // an observable
subscriber = test.pipe(
op1(),
op2(),
op3()
)
Trong ví dụ trên, chúng tôi đã tạo một phương thức có thể quan sát bằng cách sử dụng () nhận các giá trị 1, 2 và 3. Bây giờ, trên có thể quan sát này, bạn có thể thực hiện một thao tác khác, sử dụng bất kỳ số toán tử nào sử dụng phương thức pipe () như hình minh họa ở trên. Việc thực thi các toán tử sẽ diễn ra tuần tự trên những gì có thể quan sát được.
Để làm việc với các toán tử, trước tiên hãy nhập nó như hình dưới đây:
from rx import of, operators as op
Đây là một ví dụ hoạt động -
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)))
Trong ví dụ trên, có một danh sách các số, từ đó chúng ta đang lọc các số chẵn bằng toán tử bộ lọc và sau đó thêm nó bằng toán tử giảm.
Output
E:\pyrx>python testrx.py
Sum of Even numbers is 30
Đây là danh sách các Nhà điều hành mà chúng ta sẽ thảo luận -
- Tạo có thể quan sát
- Toán tử toán học
- Toán tử chuyển đổi
- Lọc toán tử
- Các toán tử xử lý lỗi
- Các nhà khai thác tiện ích
- Conditional
- Connectable
- Kết hợp các toán tử
Tạo có thể quan sát
Sau đây là những điều có thể quan sát, chúng ta sẽ thảo luận trong danh mục Sáng tạo
Hiển thị các ví dụ
Có thể quan sát được | Sự miêu tả |
---|---|
tạo nên | Phương pháp này được sử dụng để tạo ra một quan sát được. |
trống | Điều này có thể quan sát được sẽ không xuất ra bất cứ thứ gì và trực tiếp phát ra trạng thái hoàn chỉnh. |
không bao giờ | Phương pháp này tạo ra một quan sát được sẽ không bao giờ đạt đến trạng thái hoàn chỉnh. |
phi | Phương thức này sẽ tạo ra một lỗi có thể quan sát được. |
từ_ | Phương thức này sẽ chuyển đổi mảng hoặc đối tượng đã cho thành một đối tượng có thể quan sát được. |
khoảng thời gian | Phương pháp này sẽ cung cấp một loạt các giá trị được tạo ra sau một thời gian chờ. |
chỉ | Phương thức này sẽ chuyển đổi giá trị đã cho thành một giá trị có thể quan sát được. |
phạm vi | Phương thức này sẽ cung cấp một loạt các số nguyên dựa trên đầu vào đã cho. |
giá trị lặp lại | Phương thức này sẽ tạo ra một giá trị có thể quan sát được sẽ lặp lại giá trị đã cho theo số lượng được đưa ra. |
khởi đầu | Phương thức này nhận một hàm làm đầu vào và trả về một giá trị có thể quan sát được sẽ trả về giá trị từ hàm đầu vào. |
hẹn giờ | Phương thức này sẽ phát ra các giá trị theo thứ tự sau khi hết thời gian chờ. |
Toán tử toán học
Các toán tử mà chúng ta sẽ thảo luận trong danh mục Toán tử như sau: -
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả |
---|---|
Trung bình cộng | Toán tử này sẽ tính giá trị trung bình từ nguồn có thể quan sát được đã cho và xuất ra giá trị có thể quan sát được sẽ có giá trị trung bình. |
kết hợp | Toán tử này sẽ nhận vào hai hoặc nhiều khả năng quan sát và đưa ra một khả năng quan sát duy nhất với tất cả các giá trị trong chuỗi. |
đếm | Toán tử này nhận một có thể quan sát với các giá trị và chuyển đổi nó thành một có thể quan sát sẽ có một giá trị duy nhất. Hàm count nhận trong hàm vị từ như một đối số tùy chọn. Hàm có kiểu boolean và sẽ chỉ thêm giá trị vào đầu ra nếu nó thỏa mãn điều kiện. |
tối đa | Toán tử này sẽ đưa ra một giá trị có thể quan sát được với giá trị tối đa từ nguồn có thể quan sát được. |
min | Toán tử này sẽ đưa ra một giá trị có thể quan sát được với giá trị nhỏ nhất từ nguồn có thể quan sát được. |
giảm | Toán tử này nhận vào một hàm được gọi là hàm tích lũy được sử dụng trên các giá trị đến từ nguồn có thể quan sát được và nó trả về các giá trị tích lũy ở dạng có thể quan sát được, với một giá trị gốc tùy chọn được chuyển đến hàm tích lũy. |
Tổng | Toán tử này sẽ trả về một giá trị có thể quan sát được với tổng của tất cả các giá trị từ nguồn có thể quan sát được. |
Toán tử chuyển đổi
Các toán tử mà chúng ta sẽ thảo luận trong danh mục Toán tử chuyển đổi được đề cập dưới đây:
Hiển thị các ví dụ
Nhà điều hành | thể loại |
---|---|
đệm | Toán tử này sẽ thu thập tất cả các giá trị từ nguồn có thể quan sát được và phát ra chúng theo các khoảng thời gian đều đặn khi điều kiện biên đã cho được thỏa mãn. |
ground_by | Toán tử này sẽ nhóm các giá trị đến từ nguồn có thể quan sát được dựa trên hàm key_mapper đã cho. |
bản đồ | Toán tử này sẽ thay đổi mỗi giá trị từ nguồn có thể quan sát thành một giá trị mới dựa trên kết quả của mapper_func đã cho. |
quét | Toán tử này sẽ áp dụng một hàm tích lũy cho các giá trị đến từ nguồn có thể quan sát được và trả về một giá trị có thể quan sát được với các giá trị mới. |
Lọc toán tử
Các toán tử mà chúng ta sẽ thảo luận trong danh mục toán tử Lọc được đưa ra dưới đây:
Hiển thị các ví dụ
Nhà điều hành | thể loại |
---|---|
sự suy đồi | Toán tử này sẽ cung cấp các giá trị từ nguồn có thể quan sát được, cho đến khi khoảng thời gian đã cho và bỏ qua phần thời gian còn lại. |
khác biệt | Toán tử này sẽ cung cấp tất cả các giá trị khác biệt với nguồn có thể quan sát được. |
element_at | Toán tử này sẽ cung cấp một phần tử từ nguồn có thể quan sát được cho chỉ số đã cho. |
bộ lọc | Toán tử này sẽ lọc các giá trị từ nguồn có thể quan sát được dựa trên hàm vị từ đã cho. |
Đầu tiên | Toán tử này sẽ cho phần tử đầu tiên từ nguồn có thể quan sát được. |
ignore_elements | Toán tử này sẽ bỏ qua tất cả các giá trị từ nguồn có thể quan sát được và chỉ thực hiện các lệnh gọi để hoàn thành hoặc các hàm gọi lại lỗi. |
Cuối cùng | Toán tử này sẽ đưa ra phần tử cuối cùng từ nguồn có thể quan sát được. |
nhảy | Toán tử này sẽ trả lại một giá trị có thể quan sát được sẽ bỏ qua lần xuất hiện đầu tiên của các mục đếm được lấy làm đầu vào. |
bỏ qua | Toán tử này sẽ trả lại một giá trị có thể quan sát được sẽ bỏ qua lần xuất hiện cuối cùng của các mục đếm được lấy làm đầu vào. |
lấy | Toán tử này sẽ đưa ra danh sách các giá trị nguồn theo thứ tự liên tục dựa trên số lượng đã cho. |
take_last | Toán tử này sẽ đưa ra một danh sách các giá trị nguồn theo thứ tự liên tục từ cuối cùng dựa trên số lượng đã cho. |
Các toán tử xử lý lỗi
Các toán tử mà chúng ta sẽ thảo luận trong danh mục Toán tử xử lý lỗi là: -
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả |
---|---|
nắm lấy | Toán tử này sẽ kết thúc nguồn có thể quan sát được khi có một ngoại lệ. |
thử lại | Toán tử này sẽ thử lại trên nguồn có thể quan sát được khi có lỗi và khi quá trình thử lại được thực hiện, nó sẽ kết thúc. |
Các nhà khai thác tiện ích
Sau đây là các toán tử mà chúng ta sẽ thảo luận trong danh mục Toán tử tiện ích.
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả |
---|---|
sự chậm trễ | Nhà điều hành này sẽ trì hoãn phát xạ có thể quan sát được nguồn theo thời gian hoặc ngày được đưa ra. |
cụ thể hoá | Toán tử này sẽ chuyển đổi các giá trị từ nguồn có thể quan sát được với các giá trị được phát ra dưới dạng giá trị thông báo rõ ràng. |
Khoảng thời gian | Toán tử này sẽ cung cấp thời gian trôi qua giữa các giá trị từ nguồn có thể quan sát được. |
hết giờ | Toán tử này sẽ cung cấp tất cả các giá trị từ nguồn có thể quan sát được sau thời gian trôi qua, nếu không sẽ gây ra lỗi. |
dấu thời gian | Toán tử này sẽ đính kèm một dấu thời gian cho tất cả các giá trị từ nguồn có thể quan sát được. |
Toán tử có điều kiện và Boolean
Các toán tử mà chúng ta sẽ thảo luận trong danh mục Toán tử có điều kiện và Boolean như được đưa ra bên dưới:
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả |
---|---|
tất cả | Toán tử này sẽ kiểm tra xem tất cả các giá trị từ nguồn có thể quan sát được có thỏa mãn điều kiện đã cho hay không. |
chứa đựng | Toán tử này sẽ trả về một giá trị có thể quan sát được với giá trị đúng hoặc sai nếu giá trị đã cho có mặt và nếu nó là giá trị của nguồn có thể quan sát được. |
default_if_empty | Toán tử này sẽ trả về giá trị mặc định nếu nguồn có thể quan sát được trống. |
chuỗi_equal | Toán tử này sẽ so sánh hai chuỗi có thể quan sát hoặc một mảng giá trị và trả về một có thể quan sát với giá trị true hoặc false. |
bỏ qua | Toán tử này sẽ loại bỏ các giá trị từ nguồn có thể quan sát được cho đến khi thứ hai có thể quan sát được tạo ra một giá trị. |
bỏ qua | Toán tử này sẽ trả về một giá trị có thể quan sát được với các giá trị từ nguồn có thể quan sát được thỏa mãn điều kiện được truyền. |
take_until | Toán tử này sẽ loại bỏ các giá trị khỏi nguồn có thể quan sát được sau khi nguồn có thể quan sát được thứ hai phát ra một giá trị hoặc kết thúc. |
mất_giá | Toán tử này sẽ loại bỏ các giá trị khỏi nguồn có thể quan sát được khi điều kiện không thành công. |
Các nhà khai thác có thể kết nối
Các toán tử mà chúng ta sẽ thảo luận trong danh mục Toán tử có thể kết nối là:
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả |
---|---|
công bố | Phương pháp này sẽ chuyển đổi cái có thể quan sát được thành cái có thể quan sát được. |
ref_count | Toán tử này sẽ làm cho người có thể quan sát được trở thành có thể quan sát được bình thường. |
phát lại | Phương thức này hoạt động tương tự như replaySubject. Phương thức này sẽ trả về các giá trị tương tự, ngay cả khi giá trị có thể quan sát đã được phát ra và một số người đăng ký đăng ký muộn. |
Kết hợp các toán tử
Sau đây là các toán tử mà chúng ta sẽ thảo luận trong danh mục Toán tử kết hợp.
Hiển thị các ví dụ
Nhà điều hành | Sự miêu tả |
---|---|
kết hợp | Toán tử này sẽ tạo một bộ giá trị cho đầu vào có thể quan sát được. |
hợp nhất | Toán tử này sẽ hợp nhất các khả năng quan sát đã cho. |
bắt đầu với | Toán tử này sẽ nhận các giá trị đã cho và thêm vào đầu nguồn có thể quan sát được, trả về chuỗi đầy đủ. |
zip | Toán tử này trả về một giá trị có thể quan sát được với các giá trị ở dạng tuple được hình thành bằng cách lấy giá trị đầu tiên của giá trị có thể quan sát đã cho, v.v. |