Własne funkcje w Pythonie – jak budować realne rozwiązania krok po kroku

21 listopada 2025

własne funkcje w Pythonie - funkcje Python przykład

Kiedy uczymy się programowania, szczególnie Pythona, na początku wszystko wydaje się proste: kilka zmiennych, trochę operacji matematycznych, jakieś pierwsze printy. Ale prawdziwe „wejście na wyższy poziom” zaczyna się dopiero w momencie, w którym zaczynasz tworzyć własne funkcje i rozumieć, jak łączyć ze sobą różne elementy języka.

W tej lekcji — i w tym artykule — przeprowadzę Cię przez proces budowania dwóch funkcji. Jedna będzie wersją podstawową, pokazującą samą logikę operowania na danych. Druga będzie już wersją „PRO”: czytanie plików sprzedażowych, iterowanie po folderach, budowanie listy słowników, sumowanie danych i ogarnianie błędów, które naturalnie pojawiają się w takim procesie.

To jest dokładnie ten typ zadania, z którym spotykają się analitycy danych w realnych firmach. Nie jest to przykład typu „wyssany z palca”. To jest praktyka — i pokazanie, jak krok po kroku przechodzę od problemu do działającego rozwiązania.


Problem, który chcemy rozwiązać

Zaczniemy od sytuacji bardzo typowej w analizie danych: mamy dane sprzedażowe i chcemy policzyć, ile sprzedano danego produktu. W wersji „podstawowej” te dane są już przygotowane — lista słowników. W wersji bardziej zaawansowanej — dane znajdują się w kilku plikach tekstowych, w folderach. To oznacza:

  • trzeba odczytać pliki,
  • pominąć nagłówki,
  • sparsować linijki,
  • zamienić liczby zapisane jako tekst na liczby faktyczne,
  • zbudować strukturę danych w Pythonie,
  • i dopiero wtedy policzyć sprzedaż.

To wszystko będziemy robić — ale zaczniemy prosto.


Pierwsza funkcja: sumowanie sprzedaży z listy słowników

Wyobraź sobie, że mamy dane przygotowane w Pythonie:

sales_data = [
    {"product": "Apple", "quantity": 50},
    {"product": "Banana", "quantity": 24},
    {"product": "Apple", "quantity": 65},
]

Chcę napisać funkcję, która:

  1. przyjmie powyższą listę,
  2. otrzyma nazwę produktu,
  3. i zwróci sumę sprzedanych sztuk danego produktu.

Czyli:

total_sales(sales_data, "Apple") → 115

Tworzenie funkcji krok po kroku

Najpierw definiuję funkcję:

def total_sales(data, product):

Następnie tworzę zmienną, która będzie przechowywała sumę:

total = 0

Teraz przechodzę przez każdy słownik w liście:

for d in data:

I sprawdzam, czy produkt się zgadza:

if d["product"] == product:
    total += d["quantity"]

Na koniec zwracam wartość:

return total

Całość wygląda tak:

def total_sales(data, product):
    total = 0
    for d in data:
        if d["product"] == product:
            total += d["quantity"]
    return total

Wywołanie:

print(total_sales(sales_data, "Apple"))

Wynik:

115

I to jest ten moment, w którym większość początkujących mówi: „Kurczę, to jest łatwe”.
I mają rację — do momentu, kiedy dane są idealnie podane.


Wersja PRO: dane w folderach i plikach

W realnych projektach dane są chaotyczne. Są w plikach, często w kilku folderach, w różnych miesiącach, latach.

Załóżmy, że mamy strukturę:

data/
 ├── sales_january.txt
 ├── sales_february.txt

Każdy plik wygląda tak:

date,product,quantity
2023-01-01,Apple,50
2023-01-02,Banana,24
2023-01-03,Apple,65
...

Celem jest:

  1. Przejść po wszystkich plikach w folderze.
  2. Otworzyć każdy z nich.
  3. Pominąć nagłówek.
  4. Przekształcić każdą linię w słownik.
  5. Zebrać te słowniki do listy.
  6. Zsumować wartości dla wskazanego produktu.

Żeby to zrobić czysto, rozbijam to na dwie funkcje.


Funkcja 1: wczytywanie danych z pojedynczego pliku

Ta funkcja powinna:

  • otworzyć plik,
  • pominąć nagłówek,
  • rozbić linie po przecinku,
  • zamienić ilość na integer,
  • zbudować listę słowników,
  • zwrócić tę listę.

Kod:

def read_sales_data(filepath):
    """
    Wczytuje plik sprzedażowy i zwraca listę słowników.
    """
    sales_data = []

    with open(filepath, "r") as file:
        next(file)  # pomijamy nagłówek
        for line in file:
            date, product, quantity = line.strip().split(",")
            quantity = int(quantity)  # konwersja tekstu na liczbę

            sales_data.append({
                "date": date,
                "product": product.strip(),
                "quantity": quantity
            })

    return sales_data

Ta jedna funkcja robi naprawdę dużo pracy — i jest bardzo uniwersalna.
Możesz ją wykorzystać nie tylko do analizy sprzedaży, ale właściwie do każdego typu plików CSV/TXT o podobnej strukturze.


Funkcja 2: sumowanie sprzedaży ze wszystkich plików w folderze

Teraz potrzebujemy funkcji, która:

  • przejdzie po wszystkich plikach .txt,
  • dla każdego pliku wywoła read_sales_data,
  • będzie „dokładać” wartości quantity do sumy.

Kod:

import os

def total_sales_from_directory(directory, product):
    total = 0

    for file in os.listdir(directory):
        if file.endswith(".txt"):
            filepath = os.path.join(directory, file)
            sales_data = read_sales_data(filepath)

            for d in sales_data:
                if d["product"] == product:
                    total += d["quantity"]

    return total

Wywołanie:

print(total_sales_from_directory("data", "Apple"))

Załóżmy, że wynik to:

138

I to oznacza, że Python przeleciał przez wszystkie pliki, odczytał je, wyczyścił i zsumował wartości.


Proces debugowania — co było nie tak po drodze

W takiej pracy błędy to chleb powszedni. I dobrze.
Traktuję je jak naturalną część procesu — bo to właśnie błędy uczą nas najwięcej.

Podczas budowy funkcji można natknąć się na:

1. Literówki (np. „janurary” zamiast „january”)

Najbardziej klasyczny błąd.
Python Ci tego nie wybaczy — inaczej niż Excel.

2. Brak nawiasu w wywołaniu funkcji

To mnie nieustannie bawi, bo wszyscy myślą, że tylko początkujący robią takie błędy.
Nie. Wszyscy programiści.

3. Próba dodawania tekstu zamiast liczby

Np.:

"50" + "65" = "5065"

Czyli Python konkatenował tekst zamiast go sumować.

Rozwiązanie: quantity = int(quantity).

4. Brak import os

Typowy błąd przy pracy z folderami.

5. Nieprawidłowa ścieżka do pliku

Szczególnie gdy pliki są w podfolderach.

6. Nieprawidłowa obsługa nagłówka

Gdy nie użyjemy next(file), nagłówek może wywołać błąd parsowania.


Dodanie adnotacji typów i docstringów

To jest element, który odróżnia „skrypt uczniowski” od „kodu profesjonalnego”.

Python pozwala nam opisać funkcję:

  • jakie typy przyjmuje,
  • jaki typ zwraca.

Przykład:

def total_sales_from_directory(directory: str, product: str) -> int:
    """
    Sumuje liczbę sprzedanych sztuk produktu z plików w podanym folderze.
    """

To już pachnie prawdziwym kodem produkcyjnym.

Jest:

  • dokumentacja,
  • czystość,
  • przewidywalność,
  • większa szansa uniknięcia błędów.

Dlaczego ta lekcja jest ważna?

To, co zrobiliśmy w tym artykule, to mini-projekt analityczny:

  • praca z listami i słownikami,
  • praca z plikami,
  • praca z folderami,
  • pętle, funkcje, warunki,
  • modularność,
  • typowanie i dokumentowanie,
  • debugowanie,
  • kontrolowanie struktury danych.

Tak wygląda 80% pracy analityka danych w Pythonie.

I dlatego ta lekcja tak dobrze przygotowuje do prawdziwej pracy.
Pokazuje proces — od danych surowych po konkretne wyniki biznesowe.

Zapisz się do
newslettera

🎁 i zgarnij darmowe bonusy:

Poradnik Początkującego Analityka

Video - jak szukać pracy w IT

Regularne dawki darmowej wiedzy, bez spamu


Zakończenie

W tej lekcji przeszedłem przez cały proces budowy funkcji analizujących dane sprzedażowe.
Od najprostszej wersji operującej na liście słowników aż po profesjonalne rozwiązanie czytające dane z wielu plików w folderach.

To dokładnie taka praca, jaką wykonuje analityk danych w codziennych projektach: czytanie surowych danych, czyszczenie ich, budowanie logiki funkcji i sumowanie wyników.

Jeśli ten artykuł był dla Ciebie pomocny, możesz śmiało udostępnić go dalej w swoich mediach społecznościowych. Dzięki temu więcej osób dowie się, jak w praktyce pracować z Pythonem w analizie danych.

Inne ciekawe artykuły:

Autorem artykułu jest Kajo Rudziński – analytical data architect, uznany ekspert w analizie danych, twórca KajoData oraz społeczności dla analityków KajoDataSpace.

To tyle w tym temacie. Analizujcie w pokoju!  

Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego 
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych 
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości

Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube

Ja Ci ją z przyjemnością wyślę. Za darmo. Bez spamu.

Poradnik Początkującego Analityka

Video - jak szukać pracy w IT

Regularne dawki darmowej wiedzy, bez spamu.