🧰 Konwencja nazewnictwa
Żeby otrzymać kod czytelny, spójny z innymi projektami i łatwy w utrzymaniu w zespole, wykorzystuje się konwencję nazewnictwa na podstawie PEP 8 (standard i przewodnik stylu w Pythonie).
Najważniejsze konwencje:
-
Zmienne lokalne
- Styl:
snake_case - Przykład:
total_count - Opis: Małe litery, słowa oddzielone podkreśleniem. Najczęściej używany styl.
- Styl:
-
Funkcje
- Styl:
snake_case - Przykład:
calculate_average() - Opis: Nazwa opisowa, zawiera czasownik – mówi, co robi funkcja.
- Styl:
-
Klasy
- Styl:
PascalCase - Przykład:
DataProcessor - Opis: Każde słowo wielką literą, bez podkreśleń. Stosowane też do wyjątków.
- Styl:
-
Stałe (np. konfiguracja)
- Styl:
UPPER_CASE - Przykład:
MAX_BUFFER_SIZE = 1024 - Opis: Duże litery, słowa oddzielone podkreśleniem. Stałe konfiguracyjne i wartości niezmienne.
# Stałe PI = 3.14159 MAX_CONNECTIONS = 10 DEFAULT_TIMEOUT = 30 # sekundy def calculate_circle_area(radius): return PI * radius**2 print(f"Pole koła o promieniu 2: {calculate_circle_area(2)}") # Użycie stałych konfiguracyjnych def connect_to_server(timeout=DEFAULT_TIMEOUT): print(f"Łączenie z serwerem... (timeout: {timeout}s)") connect_to_server() - Styl:
-
Nazwa modułów / plików
- Styl:
snake_case - Przykład:
data_utils.py - Opis: Małe litery i podkreślenia. Nazwy powinny być krótkie i opisowe.
- Styl:
-
Nazwy pakietów
- Styl:
lowercase - Przykład:
analytics - Opis: Zazwyczaj jedno słowo, wszystkie litery małe.
- Styl:
-
Prywatne zmienne lub funkcje - umowna konwencja
- Styl:
_snake_case - Przykład:
_internal_use_only() - Opis: Jeden podkreślnik sugeruje, że dany element (zmienna, funkcja) jest przeznaczony wyłącznie do użytku wewnętrznego w module lub klasie. Nie są importowane przez
from module import *.
_internal_variable = "prywatna zmienna" def _helper_function(): return "wewnętrzna funkcja" - Styl:
-
Naprawdę prywatne zmienne/metody (w klasie)
- Styl:
__snake_case - Przykład:
__very_private - Opis: Aktywują mechanizm name mangling – Python przekształca nazwę wewnętrznie, aby uniknąć kolizji nazw w klasach dziedziczących. Najczęściej używane w klasach do oznaczania "naprawdę prywatnych" atrybutów lub metod.
class MyClass: def __init__(self): self.__private = 42 # Python zmienia to na _MyClass__private obj = MyClass() print(obj._MyClass__private) # Dostęp nadal możliwy, ale nazwa została ukryta - Styl:
-
Metody specjalne (magiczne)
- Styl:
__dunder__ - Przykład:
__init__,__str__ - Opis: Metody specjalne używane przez interpreter. Nie tworzymy własnych nazw w tym stylu!
- Styl: