Do tej pory widzieliśmy parę struktur danych w Pythonie: łańcuchy i listy. Każdą z nich obsługuje kilka metod, które są rodzajami funkcji.
Na przykład jedną z metod list jest metoda reverse(). Jak sama nazwa wskazuje, odwraca listę (na przykład, pierwsza pozycja staje się ostatnią i vice versa). Metodę można wywołać używając kropki (.) i struktury jak poniżej:
«objectName».«methodName»(«list of arguments, if any»)
Dla porównania, składnia, którą widzieliśmy już w przypadku wywołania funkcji była następująca
«functionName»(«list of arguments, if any»)
Oto przykład wywołania dla listy reverse.
Przykładem metody, która ma argument jest str.startswith:
Wiele Metod
Poniżej wymieniono najczęstsze metody klas łańcuchów i list. Są to głównie zadania, które powinieneś być w stanie napisać samodzielnie; użycie standardowych metod ma tę zaletę, że ułatwia innym osobom czytanie i edycję kodu.
Listy
Metody te nie zmieniają listy:
list.index(X): znajdź X na liście. Konkretnie, przeszukując wszystkie elementy zwraca takiei, żelist[i]==X. Zwracane jest najmniejszei. JeśliXnie istnieje na liście, wtedy swoduje toValueError.X in listzwróciTruejeśliXjest elementem listy, w przeciwnym wypadku zwróciFalse. Dzięki temu można uniknąć wystąpienia błęduValueError. (Uwaga,injest operatorem, nie metodą.)
list.count(X): zwraca liczbę, ile razyXpojawisię na liście.
Metody te zmieniają listę:
list.append(X)dodajeXna końcu listylistlist.insert(i, X)dodajeXnai-tej pozycjilist.extend(L)dodaje listęLna końculist.remove(X)usuwa pierwsze wystąpieniXz listylist.pop(i)zwraca & usuwa elementlist[i], natomiastlist.pop()zwraca & usuwa ostatni elementdel list[i]zwracai-ty element zlisti usuwa go (Uwaga, wyrażenie "delstatement", nie jest metodą)list.reverse()odwraca listęlist.sort()sortuje listę
Wszystkie powyższe metody z wyjątkiem pop zwracają None. Niektóre z tych funkcji mogą być również wywołane z nieco innymi argumentami; szczegółowe informacje znajdują się w sekcji dotyczącej metod list w dokumentacji Python. Listy obsługują także złożone podzakresy zwane "plastrami", które umożliwiają wstawianie i usuwanie całych podlist, podobnie jak zstring[x:y:z] wykonany w wykonany lekcjach.
Łańcuchy
Podobnie jak dla list, możesz używać in, index i count dla łańcuchów. Dają one więcej możliwości, ponieważ działają na podciagach, a nie tylko na pojedynczych znakach:
S in Tjest boolowskim wskaźnikiem, czy łańcuchSjest podłańcuchem łańcuchaTS.index(T)znajduje pierwszy indeksS, gdzieTjest podłańcuchemS.count(T)podaje liczbę wystąpień nieprzerwanychTjako podłańcuchaS
Oto niektóre z najpopularniejszych metod str:
- Letter case:
capitalize, lower, upper, islower, isupper - Characters:
isalpha, isdigit - Padding:
center, ljust, rjust;stripusuwa padding - Substrings:
endswith, startswith, find, replace - Parsing:
split, splitlines
W razie potrzeby przedstawimy je bardziej szczegółowo. Pełną szczegółową listę metody łańcucha podano w dokumentacji Python.
Łańcuchy są niezmienne. Wspomnęliśmy list.reverse(), która zmienia listę, odwracając ją, ale tutaj nie ma tej metody str.reverse(). Dzieje się tak, ponieważ obiekty łańcuchowe nie mogą być modyfikowane po ich utworzeniu. W lekcji 17 wyjaśnimy nieco więcej na ten temat.
Oto przykład metody łańcucha: S.replace(old, new) zwraca zmodyfikowaną wersję S, gdzie każde wystąpienie starego podłańcucha zostało zastąpione nowym. Powoduje to utworzenie nowego łańcucha bez zmiany starego:
W następnym ćwiczeniu przydatne będą następujące metody:
• str.replace, którą właśnie opisaliśmy
• metoda typu boolowskiego str.isalpha (), która zwraca True, jeśli str jest łańcuchem (lub znakiem) składającym się wyłącznie z liter
• metoda typu boolean str.isdigit (), która zwraca wartość True, jeśli str jest łańcuchem (lub znakiem) składającym się wyłącznie z cyfr
• str.upper (), która zwraca wersję łańcucha str konwertowaną na wielką literę.
str.replace, którą właśnie opisaliśmy- metoda boolowska
str.isalpha(), która zwracaTrue, jeślistrjest łańcuchem (lub znakiem) składającym się wyłącznie z liter - metoda boolowska
str.isdigit(), która zwraca wartośćTrue, jeślistrjest łańcuchem (lub znakiem) składającym się wyłącznie z cyfr str.upper()która zwraca wersję łańcuchastrkonwertowaną do wielkich liter
![]() | Reszta tej lekcji ma techniczny charakter i jej treść nie jest wymagana do realizacji pozostałych lekcji. |
Więcej o obiektach
Poznając Pythona, napotkasz więcej klas niż tylko ciągi i listy. Inne, które prawdopodobnie okażą się przydatne, to file objects, sets i dictionaries. Wszystkie mają wiele przydatnych metod. Możesz poleceniem poprosić Pythona o wszystkie metody danego obiektu używając funkcji dir:
Patrzenie na właściwości obiektu nazywa się introspekcją. Wszystko w Pythonie może mieć metody:
Niektóre wpisy w dir są w zasadzie member variables (zmiennymi składowymi) a nie metodami, na przykład int.denominator jest liczbą, a nie funkcją. Technicznie, w Pythonie funkcje są obiektami więc funkcje składowe są szczególnym przypadkiem zmiennych składowych.
Możesz również przeprowadzić introspekcję modułów. Jeśli zaimportujesz import math, a następnie wywołasz dir(math), otrzymasz listę wszystkich elementów modułu math, w tym liczbę pi i funkcję sqrt.
Dlaczego obiekty?
Dlaczego mamy metody takie jak S.index(T), a nie tylko proste wywołanie funkcji, takie jak index(S, T)? To znaczy, dlaczego w ogóle mamy obiekt S i metodę str.index()?
Główne zalety obiektów stają się wyraźniejsze gdy rozpoczynasz programowanie przy użyciu bardziej złożonych i różnorodnych typów danych. Każdy typ obiektu (tzn. str class) reprezentuje zarówno podstawowe dane, które są przechowywane (na przykład sekwencja znaków i jej długość) oraz typy operacji, które można wykonać na nim (np. Konwersja na wielkie litery lub wytwarzanie Podciąg). Bardziej złożonym przykładem są obiekty plików: reprezentują nazwę otwieranego pliku, bieżącą pozycję w pliku i sposoby ich odczytu i zapisu. Możesz nawet zdefiniować własne typy danych!
To ogólne podejście nazywa się "programowaniem obiektowym" (OOP). Niektóre z jego zalet to:
- organizacja: Wszystko z modułu
mathjest dostępne poprzez wywołanie ze składniąmath.«name», z uniknięciem możliwości nadpisania istniejących nazw zmiennych w programie. - kapsułkowanie: Podobnie jak program może pracować z kilkoma łańcuchami lub kilkoma plikami jednocześnie, można pracować z wieloma odrębnymi kopiami (instancjami) typów danych zdefiniowanymi przez jakąkolwiek inną klasę.
- powtórne wykorzystanie: Po zdefiniowaniu typu danych (np.
str) lub metod w bibliotece (np.math) możesz wielokrotnie używać je lub przekazywać innym osobom do użycia. - debugowanie: Widzieliśmy wcześniej, jak pisanie funkcji eliminuje konieczność stosowania wielu kopii tego samego kodu, a to sprawia, że debugowanie jest łatwiejsze. Możemy uzyskać ten sam efekt, gdy zdefiniujemy wszystkie funkcje związane z typem danych w jednym miejscu (definicja klasy).
- relacje między klasami: Python wie, ze metoda
indexoznacza jedno dla łańcucha i coś innego dla listy.Podobnie nie tylko Python potrafi czytać i pisać pliki na Twoim komputerze, ale także odczytywać i zapisywać dane w internecie. W obydwu przypadkach (sekwencji znaków lub list oraz plików lokalnych lub zdalnych) powiązane klasy mogą być jednorodnie przetwarzane, używając pojęcia dziedziczenia.
W pozostałych części CS Circles będziemy używać tylko obiektów i metod; Możesz dowiedzieć się więcej o tworzeniu własnych klas później (zobacz stronę Zasoby).
Kolejne trzy lekcje można wykonać w dowolnej kolejności i dają wiele wyzwań łączących tematy z wcześniejszych lekcji.




