
Funkcje wbudowane w Pythonie
Funkcje wbudowane w Pythonie są dostępne od razu po uruchomieniu interpretera Pythona, bez konieczności importowania dodatkowych bibliotek. W artykule opisuję zastosowanie funkcji wbudowanych oraz prezentuję przykłady ich użycia w programach.
Postaram się przy okazji odpowiedzieć na często zadawane pytania o przydatne funkcje w Pythonie, które otrzymujemy na naszym blogu.
Źródła dostępnych w Pythonie funkcji
Niektóre funkcje w Pythonie są wbudowane w interpreter i można ich używać od razu. Inne z kolei znajdują się w modułach, które przed użyciem trzeba zaimportować. Poniżej znajdziesz informacje, w jakich przestrzeniach znajdują się funkcje Pythona:
- Funkcje wbudowane – są dostępne globalnie i nie wymagają importowania. Znajdują się w module builtins, który jest ładowany automatycznie podczas uruchamiania programu.
- Funkcje z biblioteki standardowej – zorganizowane są w moduły tematyczne, takie jak math, random, czy os. Aby ich używać, należy zaimportować odpowiedni moduł.
- Funkcje z modułów zewnętrznych – znajdują się w bibliotekach, które nie są częścią biblioteki standardowej np. numpy, pandas, requests. Wymagają wcześniejszej instalacji bibliotek.
- Funkcje zdefiniowane przez użytkownika – są tworzone przez programistów. Informacje, w jaki sposób definiować funkcje znajdziesz w artykule Tworzenie funkcji w Pythonie
- Funkcje we frameworkach i aplikacjach – Python jest używany we frameworkach np. Django, Flask oraz aplikacjach np. Blender, GIMP. Takie środowiska dostarczają swoich własnych API z funkcjami specyficznymi dla ich zastosowań np. django.shortcuts.render() w Django, bpy.ops.object.select_all() w Blenderze.
Zrozumienie, gdzie szukać odpowiednich funkcji i jak je wykorzystać, ułatwia pracę i pozwala na lepsze wykorzystanie możliwości Pythona w projektach.
Czym są funkcje wbudowane w Pythonie?
Funkcje wbudowane w Pythonie (ang. built-in functions) to:
- zestaw funkcji, które są zdefiniowane w module builtins – moduł ten jest automatycznie ładowany przez interpreter Pythona i funkcje są dostępne od razu po uruchomieniu interpretera
- obejmują podstawowe operacje, takie jak print(), len(), abs(), type() czy max(), które są bardzo przydatne w codziennym programowaniu
Funkcje wbudowane podzieliłem na kilka kategorii, które przedstawiam poniżej. Można je jednak uporządkować zupełnie inaczej, w zależności od potrzeb lub w ogóle nie tworzyć kategorii.
Listę funkcji wbudowanych znajdziesz w dokumentacji Pythona.
Pełny spis wbudowanych funkcji możemy uzyskać w Pythonie poleceniem dir()
.
Funkcje do operacji na danych
W poniższej tabeli przedstawiam funkcje, które są często wykorzystywane do analizowania i manipulowania danymi w Pythonie
Nazwa funkcji | Opis |
---|---|
len() | Zwraca liczbę elementów w obiekcie np. długość listy, ciągu tekstowego, krotki. Przykład: len([1, 2, 3]) zwróci 3 . |
sum() | Zwraca sumę wszystkich elementów w iterowalnym obiekcie np. liście liczb. Przykład: sum([1, 2, 3]) zwróci 6 . |
max() | Zwraca największy element w iterowalnym obiekcie. Działa dla liczb oraz innych obiektów, które mogą być porównywane. Przykład: max([1, 2, 3]) zwróci 3 . |
min() | Zwraca najmniejszy element w iterowalnym obiekcie. Działa dla liczb oraz innych obiektów, które mogą być porównywane. Przykład: min([1, 2, 3]) zwróci 1 . |
type() | Zwraca typ obiektu np. typ zmiennej int , str , list . Przykład: type(5) zwróci <class 'int'> . |
id() | Zwraca unikalny identyfikator obiektu w pamięci. Przykład: id(5) zwróci numer reprezentujący lokalizację obiektu w pamięci tj. 140726450455592. |
zip() | Łączy elementy z dwóch lub więcej iterowalnych obiektów w pary lub n-tuples, tworząc nową iterację. Przykład: print(list(zip([1, 2, 3], ['a', 'b', 'c']))) zwróci [(1, 'a'), (2, 'b')] . |
Funkcja zip() zwraca obiekt typu zip, który jest iteratorem (pozwala na sekwencyjne przechodzenie przez kolejne elementy). Aby zobaczyć wyniki np. w postaci listy musimy go przekonwertować na listę. Dlatego w przykładzie w tabeli używamy funkcji list(zip()).
Poniżej przykład programu, który analizuje dane o sprzedaży produktów w sklepie:
produkty = ['łóżko', 'szafa', 'stół', 'krzesło', 'komoda'] # produkty ceny = [1500, 1200, 800, 200, 500] # ceny produktów ilosc= [50, 30, 70, 120, 40] # liczba sprzedaży # 1. Całkowita liczba sprzedanych produktów calkowita_liczba_produktow = sum(ilosc) print('calkowita_liczba_produktow:', calkowita_liczba_produktow) # 2. Całkowity przychód ze sprzedaży calkowity_przychod = sum(cena * ilosc for cena, ilosc in zip(ceny, ilosc)) print('calkowity_przychod:', calkowity_przychod) # 3. Cena najdroższego sprzedanego produktu najdrozszy_produkt = max(ceny) print('najdrozszy_produkt', najdrozszy_produkt) # 4. Cena najtańszego sprzedanego produktu najtanszy_produkt = min(ceny) print('najtanszy_produkt', najtanszy_produkt) # Wynik # calkowita_liczba_produktow: 310 # calkowity_przychod: 211000 # najdrozszy_produkt 1500 # najtanszy_produkt 200
W przykładzie:
- tworzymy trzy listy – lista z produktami, cenami i ilością sprzedanych produktów
- wyliczamy całkowitą liczbę sprzedanych produktów sumując wartości z listy ilosc
- wyliczamy całkowity przychód ze sprzedaży. Funkcja zip() łączy elementy z listy ceny i ilosc w pary. Dla każdej pary (cena, ilosc), obliczamy wartość sprzedaży produktu (czyli cena pomnożona przez ilość) i sumujemy te wartości.
- za pomocą funkcji max() zwracamy największą wartość na liście ceny, która jest ceną najdroższego produktu
- za pomocą funkcji min() zwracamy najmniejszą wartość na liście ceny, która jest ceną najtańszego produktu
- za pomocą funkcji print() wyświetlamy wyniki
klienci = ['Anna', 'Jan', 'Kasia', 'Tomasz', 'Anna', 'Kasia'] liczba_zamowien = len(klienci) print(liczba_zamowien)
W przykładzie funkcja len() oblicza, ile elementów znajduje się na liście klienci. W tym przypadku funkcja zwróci 6, gdyż lista zawiera 6 elementów.
liczba = 5 print("Typ zmiennej 'liczba':", type(liczba)) print("Identyfikator zmiennej 'liczba':", id(liczba)) # Wynik # Typ zmiennej 'liczba': <class 'int'> # Identyfikator zmiennej 'liczba': 140726450455592
W przykładzie:
- funkcja type() zwróci typ zmiennej np. int dla liczby
- id() zwróci unikalny identyfikator reprezentujący lokalizację zmiennej w pamięci
Funkcje do konwersji typów
Funkcje do konwersji typów w języku Python umożliwiają zmianę typu danych, co jest niezbędne w pracy z różnymi formatami.
Dzięki nim możemy dostosować obiekt do wymaganego typu np. zrobić konwersję na typ całkowity, zmiennoprzecinkowy, łańcuch znaków (napis), listę czy krotkę.
Nazwa funkcji | Opis |
---|---|
int() | Konwertuje wartość na typ całkowity. Przykład: int('10') zwróci 10 . |
float() | Konwertuje wartość na typ zmiennoprzecinkowy. Przykład: float('10.5') zwróci 10.5 . |
str() | Konwertuje obiekt na łańcuch znaków. Przykład: str(10) zwróci '10' . |
list() | Tworzy listę z iterowalnego obiektu. Przykład: list((1, 2, 3)) zwróci [1, 2, 3] . |
tuple() | Tworzy krotkę z iterowalnego obiektu. Przykład: tuple([1, 2, 3]) zwróci (1, 2, 3) . |
format() | Formatuje łańcuch zgodnie z określonym wzorem. Przykład: '{0} jest liczbą'.format(10) zwróci '10 jest liczbą' . |
cena = '1200.50' # Cena jako string cena = float(cena) # Konwertujemy na float if cena > 1000: cena = cena - (cena* 0.10) # 10% rabatu print(cena)
W przykładzie:
- za pomocą funkcji float konwertujemy ciąg znaków na liczbę zmiennoprzecinkową
- za pomocą instrukcji warunkowej if obliczamy cenę z uwzględnieniem rabatu – jeśli cena jest wyższa niż 1000 obniżamy cenę o 10% i przypisujemy wynik do zmiennej cena
- wyświetlamy wynik za pomocą funkcji print()
Informacje na temat instrukcji warunkowych znajdziesz w artykule Python instrukcje warunkowe. Z kolei zmienne opisaliśmy w artykule Python zmienne.
wiek = input("Podaj swój wiek: ") wzrost = input("Podaj swój wzrost w metrach: ") wiek = int(wiek) # Konwertujemy wiek na int wzrost = float(wzrost) # Konwertujemy wzrost na float print(wiek,wzrost)
W przykładzie:
- użytkownik podaje wiek i wzrost
- konwertujemy wiek na liczbę całkowitą za pomocą funkcji int() i przypisujemy wynik do zmiennej wiek
- konwertujemy wzrost na liczbę zmiennoprzecinkową za pomocą funkcji float i przypisujemy wynik do zmiennej wzrost
- wyświetlamy wiek i wzrost
Jeśli używamy funkcji funkcji input() w Pythonie, dane wprowadzone przez użytkownika są zawsze zwracane jako ciąg znaków (typ str), niezależnie od tego, czy użytkownik wprowadził liczbę czy tekst. Dlatego w przykładzie dokonujemy konwersji.
# Użytkownik wprowadza imiona pracowników oddzielone przecinkami imiona = input("Podaj imiona pracowników, oddzielając je przecinkami: ") # Konwertujemy ciąg tekstowy na listę imion lista_imion = list(imiona.split(',')) # Wyświetlamy listę imion print("Lista imion pracowników:", lista_imion)
W przykładzie:
- za pomocą funkcji input() – użytkownik wprowadza dane w formie tekstu, np. „Anna, Paweł, Jan”
- funkcja split(’,’) dzieli ciąg tekstowy na elementy, używając przecinka jako separatora (wynik: [’Anna’, ’ Paweł’, ’ Jan’])
- funkcja list() konwertuje wynik split() na listę – w tym przypadku wynik split() już jest listą
# Dane o produkcie cena = 1999.99 # Określony wzór formatowania wzór = "Cena: {:.2f} PLN" # Formatowanie ceny sformatowana_cena = wzór.format(cena) # Wyświetlanie sformatowanej ceny print(sformatowana_cena)
W przykładzie:
- w zmiennej cena mamy informację o cenie produktu
- w zmiennej wzór określamy format, w jakim cena ma być wyświetlana „{:.2f}” – to wzór formatowania, który oznacza, że liczba będzie wyświetlana z dwoma miejscami po przecinku
- format(cena) – wstawia wartość zmiennej cena do łańcucha tekstowego w miejscu {:.2f}.
Funkcje do pracy z tekstem
Python oferuje zestaw funkcji, które umożliwiają konwersję obiektów na łańcuchy znaków, tworzenie sformatowanego tekstu oraz manipulację kodami znaków w systemach ASCII i Unicode. Poniżej funkcje, które umożliwiają pracę z tekstem w języku programowania Python.
Nazwa funkcji | Opis |
---|---|
str() | Konwertuje obiekt na łańcuch znaków. Przykład: str(10) zwróci '10' . |
repr() | Zwraca techniczną reprezentację obiektu jako łańcuch znaków. Przykład: repr('tekst') zwróci "'tekst'" . |
format() | Formatuje łańcuch zgodnie z określonym wzorem. Przykład: '{0} jest liczbą'.format(10) zwróci '10 jest liczbą' . |
ord() | Zwraca kod ASCII/Unicode znaku. Przykład: ord('A') zwróci 65 . |
chr() | Zwraca znak na podstawie kodu ASCII/Unicode. Przykład: chr(65) zwróci 'A' . |
# Numer zamówienia nr_zam = 12345 # Tworzenie wiadomości e-mail wiadomosc = "Potwierdzamy zamówienie nr " + str(nr_zam) + "." # Wyświetlenie wiadomości print(wiadomosc)
W przykładzie funkcja str() konwertuje numer zamówienia (typ int) na tekst. Dzięki temu możliwe jest jego połączenie z innymi łańcuchami.
x = 'tekst' print(str(x)) # Zwraca: tekst print(repr(x)) # Zwraca: 'tekst'
W przykładzie funkcja repr() generuje techniczną reprezentację obiektu.
Techniczna reprezentacja obiektu odnosi się do takiej formy obiektu, która jest bardziej szczegółowa i przeznaczona dla programisty, a nie użytkownika końcowego. Jest to zapis, który pokazuje dokładne odwzorowanie obiektu w Pythonie w taki sposób, aby można było go odtworzyć w kodzie. Może to być przydatne do debugowania, testów lub zapisywania obiektów w formie gotowej do odtworzenia przez interpreter Pythona.
Funkcje do pracy z iteracjami
Iteracje to proces powtarzalnego wykonywania zestawu instrukcji lub operacji na zbiorze danych. Funkcje do pracy z iteracjami w Pythonie pozwalają na przetwarzanie danych, które można iterować, takich jak listy, zbiory, krotki czy słowniki.
Iteracje są realizowane za pomocą specjalnych konstrukcji, takich jak pętle (np. for, while) lub funkcji operujących na iterowalnych obiektach. Kluczowym elementem iteracji jest iterator – obiekt, który umożliwia przechodzenie przez kolejne elementy kolekcji
Poniżej znajdziesz informacje na temat kilku funkcji przydatnych do pracy z iteracjami:
Nazwa funkcji | Opis |
---|---|
map() | Zastosowuje podaną funkcję do każdego elementu iterowalnego obiektu. Przykład: list(map(lambda x: x**2, [1, 2, 3])) Wynik: [1, 4, 9] . Funkcja map() zwraca obiekt map. Aby podejrzeć wyniki musimy dodatkowo użyć funkcji list() |
filter() | Filtruje elementy iterowalnego obiektu na podstawie podanej funkcji warunkowej. Przykład: list(filter(lambda x: x > 2, [1, 2, 3, 4])) zwróci [3, 4] . |
zip() | Łączy elementy z dwóch lub więcej iterowalnych obiektów, tworząc krotki. Przykład: list(zip([1, 2, 3], ['a', 'b', 'c'])) zwróci [(1, 'a'), (2, 'b'), (3, 'c')] . |
enumerate() | Zwraca iterowalny obiekt, który dla każdego elementu kolekcji zwraca indeks i wartość. Przykład: list(enumerate(['a', 'b', 'c'])) zwróci [(0, 'a'), (1, 'b'), (2, 'c')] . |
iter() | Tworzy iterator z iterowalnego obiektu. Przykład: list(iter([1, 2, 3])) zwróci iterator listy [1, 2, 3] . |
next() | Zwraca kolejny element z iteratora lub wartość domyślną, jeśli iterator się zakończył. Przykład: next(iter([1, 2, 3])) zwróci 1 . |
ceny = [15, 30, 5, 60, 25] wynik = filter(lambda cena: cena > 20, ceny) print(list(wynik))
W przykładzie:
- tworzymy listę z cenami i przypisujemy ją do zmiennej ceny
- za pomocą funkcji lambda() sprawdzamy, czy cena jest większa niż 20
- za pomocą funkcji filter() filtrujemy elementy i pozostawiamy tylko te, które spełniają warunek określony w funkcji lambda
- funkcją print() wyświetlamy wynik. W funkcji filter(), wynik zwracany jest jako obiekt typu filter, który jest iterowalny (można go przejść w pętli lub używać w innych strukturach, które przyjmują iteratory). Aby zobaczyć wyniki w postaci listy, musimy przekonwertować ten obiekt na listę przy pomocy funkcji list(). Dlatego w funkcji print() zagnieżdzona jest funkcja list())
Funkcje do zarządzania operacjami wejścia i wyjścia
W Pythonie istnieje kilka funkcji, które umożliwiają interakcję z użytkownikiem oraz manipulowanie danymi wejściowymi i wyjściowymi.
Nazwa funkcji | Opis |
---|---|
print() | Wyświetla dane na standardowym wyjściu. Przykład: print("Witaj świecie!") zwróci Witaj świecie! . |
input() | Pozwala na wprowadzenie danych przez użytkownika. Przykład: imie = input("Podaj swoje imię: ") , jeśli użytkownik wpisze „Jan”, wynik: Jan . |
eval() | Wykonuje kod Python zawarty w łańcuchu znaków. Przykład: x = 10; eval("x + 5") zwróci 15 . |
assert() | Sprawdza warunek i podnosi wyjątek, jeśli nie jest spełniony. Przykład: assert 5 > 3 (nic się nie dzieje, jeśli warunek jest prawdziwy, jeśli fałszywy, zgłasza wyjątek). |
dir() | Zwraca listę atrybutów obiektu. Przykład: dir(int) |
wyrazenie = input("Wpisz wyrażenie matematyczne (np. 2 + 3): ") wynik = eval(wyrazenie) print(wynik)
W przykładzie:
- pobieramy wyrażenie od użytkownika
- obliczamy wynik używając funkcji eval()
- za pomocą funkcji print() wyświetlamy wynik
Uwaga! Funkcja eval() może stwarzać niebezpieczeństwo w aplikacjach, które przyjmują dane od użytkowników, gdyż może ona wykonać dowolny kod Pythona np. usunięcie plików, dostęp do wrażliwych danych. Dlatego należy zachować ostrożność przy jej stosowaniu i unikać jej w aplikacjach, które przyjmują dane wejściowe z nieznanych źródeł.
wiek = 15 assert wiek >= 18, "Nieprawidłowy wiek" print("Rejestracja możliwa")
W przykładzie:
- do zmiennej wiek przypisujemy wartość 15
- sprawdzamy, czy wiek jest większy lub równy 18
- jeśli wiek jest większy lub równy 18 wyświetli się napis „Rejestracja możliwa”
- jeśli wiek nie jest większy lub równy 18 lat wyświetlony zostanie błąd:
napis = "Python" print(dir(napis))
W przykładzie:
- do zmiennej napis przypisujemy słowo „Python”
- wyświetlamy atrybuty i metody dostępne dla obiektu napis
Funkcje pomocnicze do zarządzania pamięcią i obiektami
W Pythonie dostępne są funkcje wbudowane, które umożliwiają zarządzanie zmiennymi, obiektami i operacjami w kodzie. Niektóre z nich są szczególnie przydatne w kontekście manipulowania obiektami, kontrolowania przestrzeni nazw oraz dynamicznego tworzenia funkcji.
Nazwa funkcji | Opis |
---|---|
del() | Usuwa obiekt lub jego elementy. Przykład: lista = [1, 2, 3]; del lista[1] usunie element o indeksie 1, czyli 2. Wynik: [1, 3] . |
globals() | Zwraca słownik globalnych zmiennych. Przykład: x =10; print(globals()) zwróci słownik z globalnymi zmiennymi w programie. x = 10 ma na celu wprowadzenie zmiennej x do zakresu globalnego, aby funkcja globals() mogła ją wyświetlić. |
locals() | Zwraca słownik lokalnych zmiennych. Przykład: x = 10; print(locals()) |
callable() | Sprawdza, czy obiekt jest wywoływalny np. funkcja lub metoda. Przykład: callable(print) zwróci True , gdyżprint jest funkcją, a callable(10) zwróci False , gdyż liczba całkowita nie jest wywoływalna. |
lambda() | Pozwala na tworzenie anonimowych funkcji w jednej linii. Przykład: dodaj = lambda a, b: a + b; dodaj(2, 3) zwróci 5 |
dodaj = lambda a, b: a + b # Wywołanie funkcji lambda i wyświetlenie wyniku print(dodaj(2, 3))
W przykładzie:
- lambda a, b: a + b tworzy anonimową funkcję, która przyjmuje dwa argumenty (a i b) i zwraca ich sumę
- dodaj(2, 3) wywołuje tę funkcję z argumentami 2 i 3
- print() wyświetla wynik, czyli 5
Funkcje pomocnicze do pracy z obiektami
W Pythonie istnieje szereg funkcji wbudowanych, które pozwalają na interakcję z obiektami w czasie działania programu. Dzięki nim programista ma możliwość uzyskiwania informacji o obiektach, modyfikowania ich właściwości, a także zarządzania nimi w sposób dynamiczny.
Nazwa funkcji | Opis |
---|---|
id() | Zwraca unikalny identyfikator obiektu. Przykład: print(id("Python")) zwróci unikalny identyfikator dla obiektu tj. 2104674668384 |
getattr() | Zwraca wartość atrybutu obiektu o podanej nazwie. Przykład: getattr(obj, "nazwa") zwróci wartość atrybutu nazwa obiektu obj , jeśli taki istnieje. Jeśli obiekt nie istnieje funkcja zwraca błąd |
setattr() | Ustala wartość atrybutu obiektu o podanej nazwie. Przykład: setattr(obj, "wiek", 30) ustawi atrybut wiek obiektu obj na wartość 30 . Jeśli obiekt nie istnieje zwraca błąd. |
hasattr() | Sprawdza, czy obiekt ma określony atrybut. Przykład: hasattr(obj, "wiek") zwróci True , jeśli obiekt obj ma atrybut wiek , w przeciwnym razie zwróci False . |
delattr() | Usuwa atrybut obiektu o podanej nazwie. Przykład: delattr(obj, "wiek") usunie atrybut wiek z obiektu obj . |
# Tworzymy klasę z atrybutami class Osoba: def __init__(self, imie, wiek): self.imie = imie self.wiek = wiek # Tworzymy instancję klasy osoba = Osoba("Jan", 30) # Używamy getattr() do pobrania atrybutu obiektu imie = getattr(osoba, "imie") # Pobiera atrybut 'imie' wiek = getattr(osoba, "wiek") # Pobiera atrybut 'wiek' print(imie) # Jan print(wiek) # 30 # Pobieramy atrybut, jeśli istnieje, lub zwracamy wartość domyślną wiek = getattr(osoba, "wiek", "Atrybut nie istnieje") print(wiek) # 30 # Jeśli odwołamy się do nieistniejącego atrybutu, zwróci wartość domyślną adres = getattr(osoba, "miasto", "Atrybut nie istnieje") print(adres) # Atrybut nie istnieje
W przykładzie:
- Tworzymy klasę Osoba:
- Klasa Osoba ma metodę __init__, która przyjmuje dwa argumenty: imie i wiek, i przypisuje je jako atrybuty obiektu
- Tworzymy instancję klasy Osoba:
- Tworzymy obiekt osoba klasy Osoba i przekazujemy argumenty „Jan” i 30, które są przypisane do atrybutów imie i wiek
- Używamy getattr() do pobrania atrybutów:
- Funkcja getattr() pozwala pobrać wartość atrybutu o nazwie podanej w drugim argumencie. Pierwsze wywołanie getattr(osoba, „imie”) zwróci wartość „Jan”. Drugie wywołanie getattr(osoba, „wiek”) zwróci wartość 30
- Jeśli podamy atrybut, który nie istnieje zwrócona zostanie informacja „Atrybut nie istnieje
W artykule przedstawiam kluczowe funkcje wbudowane w Pythonie. W trakcie naszego kursu Python poziom podstawowy funkcje te wykorzystujemy w praktycznych ćwiczeniach. Zapraszamy do wspólnego ćwiczenia na szkoleniu.
