Jak używać modułu operatora w Python

Jak używać modułu operatora w Python
W tym artykule obejmie przewodnik po użyciu modułu „operatora” dostępnego w ramach domyślnej biblioteki Python. Moduł operatora umożliwia programowanie symboli operatora za pomocą różnych funkcji. Na przykład możesz pomnożyć dwie liczby za pomocą funkcji zamiast używania symbolu „*”. Funkcje dostępne w module operatora są przydatne, gdy chcesz przekazać funkcje podlegające wezwaniu jako argumenty do innego obiektu Pythona. Możesz także serializować funkcje operatora i przechowywać je na dysku, aby można je było ponownie wybrać. Niektóre funkcje dostępne w module operatora można również użyć do wykonywania szybkiego wyszukiwania elementów w obiektach typu iterable typu. Funkcje operatora można również użyć do zastąpienia jednej funkcji Lambda, ponieważ zapewniają one znacznie czystszą i krótszą składnię.

Podstawowa składnia i użycie

Składnia funkcji dostępnych w module operatora jest dość prosta. Wywołujesz konkretną funkcję, która zwraca wynik po ocenie dostarczonych argumentów. Poniżej znajduje się przykład, który pokazuje obliczenia matematyczne wykonane przy użyciu różnych funkcji dostępnych w module operatora.

Operator importu
Dodatek = operator.Dodaj (5, 6)
Odejmowanie = operator.sub (10, 4)
mnożenie = operator.MUL (3, 4)
Division = Operator.Truediv (6, 3)
Drukuj (dodatek)
Drukuj (odejmowanie)
Drukuj (mnożenie)
Drukuj (podział)

Pierwsza instrukcja importuje moduł operatora. Następne różne funkcje dostępne w module operatora, takie jak „Dodaj”, „sub”, „MUL” i „Truediv”, a dwie liczby dostarczane są im argumenty, aby można było na nich uruchomić operacje matematyczne. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

11
6
12
2.0

Powyższy kod jest równoważny z następującymi stwierdzeniami w Python:

dodanie = 5 + 6
Odejmowanie = 10–4
mnożenie = 3 * 4
Division = 6/3
Drukuj (dodatek)
Drukuj (odejmowanie)
Drukuj (mnożenie)
Drukuj (podział)

W pierwszej próbce kodu, zamiast używać znaków lub symboli operatora, wywołujesz funkcje, aby wykonać te same obliczenia. Moduł operatora zawiera wiele innych takich funkcji użyteczności. Poniżej znajduje się przykład, który dokonuje porównań między dwiema liczbami.

Operator importu
równy = operator.Eq (5, 6)
Lesshan = operator.LT (10, 4)
LessThanequalto = operator.LE (10, 10)
NotEqual = Operator.NE (6, 3)
GreaterThan = operator.GT (5, 1)
GreaterThanequalto = operator.GE (5, 6)
druk (równy)
Drukuj (Lessthan)
Drukuj (Lesshanequalto)
Drukuj (notekowy)
Drukuj (Greater Than)
Drukuj (GreaterThanequalto)

W powyższej próbce kodu różne funkcje, takie jak „eq”, „lt”, „le”, „ne”, „gt” i „ge” ​​w celu określenia równości lub nierówności dwóch liczb dostarczanych jako argumenty tych funkcji. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

FAŁSZ
FAŁSZ
PRAWDA
PRAWDA
PRAWDA
FAŁSZ

Ta próbka kodu jest równoważna następującym stwierdzeniu:

równe = 5 == 6
Lesshan = 10 <4
LessThanequalto = 10 <= 10
Notqual = 6 != 3
Greaterthan = 5> 1
GreaterThanequalto = 5> = 6
druk (równy)
Drukuj (Lessthan)
Drukuj (Lesshanequalto)
Drukuj (notekowy)
Drukuj (Greater Than)
Drukuj (GreaterThanequalto)

Lista przydatnych funkcji dostępnych w module operatora

Poniżej znajduje się tabela pokazująca niektóre przydatne funkcje dostępne w module operatora i ich równoważne stwierdzenia. Ta tabela została pobrana z oficjalnej dokumentacji Pythona dla modułu operatora.

Typ pracy / obliczeń Funkcja podlegająca telefonie Równoważna składnia
Dodatek Dodaj (A, B) A + B
Powiązanie Conat (SEQ1, SEQ2) SEQ1 + SEQ2
Test ograniczenia zawiera (SEQ, OBJ) OBJ w SEQ
Dział Truediv (a, b) A / b
Dział floordiv (a, b) A // b
Bitwise i i_ (a, b) A&B
Bitwise Exclusive Or xor (a, b) a ^ b
Inwersja bitwów odwrócenie (a) ~ a
Bitwise lub or_ (a, b) A | B
Wykładnik pow (a, b) a ** b
Tożsamość is_ (a, b) a jest b
Tożsamość is_not (a, b) A nie jest B
Przypisanie indeksowane setitem (obj, k, v) obj [k] = v
Indeksowane usunięcie Detelm (OBJ, K) del obj [k]
Indeksowanie getItem (obj, k) obj [k]
Lewa zmiana LSHIFT (A, B) A <
Modulo mod (a, b) A % b
Mnożenie MUL (A, B) a * b
Mnożenie macierzy Matmul (A, B) A @ b
Negacja (arytmetyka) neg (a) - A
Negacja (logiczna) Not_ (a) ani
Pozytywny POS (a) + A
Prawa zmiana RSHIFT (A, B) a >> b
Przypisanie kroi setItem (SEQ, Slice (I, J), wartości) SEQ [i: j] = wartości
Usunięcie pokrój Detelm (SEQ, Slice (I, J)) del seq [i: j]
Krajanie na plastry getItem (SEQ, Slice (I, J)) SEQ [I: J]
Formatowanie ciągu mod (s, obj) s % obj
Odejmowanie sub (a, b) a - b
Test prawdy Prawda (OBJ) obj
Zamawianie LT (A, B) A
Zamawianie LE (A, B) A <= b
Równość Eq (a, b) A == B
Różnica NE (A, B) A != b
Zamawianie GE (A, B) a> = b
Zamawianie GT (A, B) a> b

Możesz odwołać się do tej tabeli, aby znaleźć odpowiednią funkcję operatora odpowiednią dla wymagań dotyczących programowania.

Funkcje operatora w miejscu

Moduł operatora zawiera również ograniczony zestaw funkcji, które mogą wykonywać obliczenia „na miejscu”. Odbywa się to poprzez modyfikację samego obiektu, przekazując go jako argument do funkcji operatora. Takie nazwy funkcji są prefiksowane z znakiem „i”. Na przykład, aby zmodyfikować obiekt na miejscu i dodać coś do niego, będziesz musiał użyć funkcji „IADD” dostępnej w module operatora. Funkcje te są szczególnie przydatne w przypadku zmiennych obiektów, takich jak Python Dictionaries i listy. Poniżej znajduje się próbka kodu:

Operator importu
A = [1, 2, 3, 4]
operator.IADD (A, [5, 6, 7, 8])
Drukuj (a)

Tutaj funkcja „IADD” została użyta do połączenia dwóch obiektów typu listy w Pythonie. Lista, która zostanie zmodyfikowana na miejscu, jest dostarczana jako pierwszy argument, a następnie lista, którą należy połączyć. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[1, 2, 3, 4, 5, 6, 7, 8]

Pełną listę funkcji dostępnych w module operatora można znaleźć tutaj.

Korzystanie z funkcji Itemgetter

Możesz użyć funkcji „Itemgetter” dostępnej w module operatora do wybierania elementów z listy. Poniżej znajduje się podstawowy przykład:

Operator importu
A = [„A”, „B”, „C”, „D”]
Drukuj (operator.Itemgetter (1, 2) (a))
druk ((a [1], a [2]))

Metoda Itemgetter otrzymuje element po jego indeksie i jest szczególnie przydatna do zbierania wielu elementów za jednym razem. Druga instrukcja pokazuje użycie funkcji Itemgetter, w której indeksy dwóch elementów są dostarczane jako argumenty. Funkcja Itemgetter zwraca obiekt, który jest następnie wywoływany, podając mu listę Python jako argument. Wynik końcowy drugiego i trzeciego stwierdzenia jest taki sam. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

('pne')
('pne')

Wiele połączeń łączonych do funkcji Itemgetter można również zapisać w następujący sposób:

Operator importu
A = [„A”, „B”, „C”, „D”]
B = operator.Itemgetter (1, 2)
Drukuj (B (a))

Funkcję Itemgetter może być również używana jako klucz podczas sortowania zagnieżdżonej listy zawierającej inne listy lub krotki. Oto przykład:

Operator importu
a = [[„A”, 2], [„B”, 4], [„C”, 1], [„D”, 5]]
A.sortować (klucz = operator.Itemgetter (1))
Drukuj (a)

Argument „kluczowy” w funkcji sort. Ten obiekt do nazywania jest uruchamiany na każdym elemencie listy przed dokonaniem jakichkolwiek porównań dla celów sortowania. Dostarczając funkcję Itemgetter, które można znaleźć jako klucz, informujesz funkcję sortowania, aby odebrać element na indeksie „1” z każdej zagnieżdżonej listy i użyj go do celów porównawczych. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[['c', 1], ['a', 2], ['b', 4], ['d', 5]]

Wniosek

Moduł operatora nie przynosi niczego nowego do tabeli, ponieważ używa symboli operatora pod spodem do wykonywania obliczeń. Możesz bardzo dobrze pisać proste instrukcje za pomocą symboli operatora. Są one jednak przydatne w scenariuszach, w których chcesz programowo wykonywać obliczenia, wywołując funkcje, przekazywanie takich funkcji, które można zapoznać się z argumentami i zastępować instrukcje Lambda czymś prostszym.