# Python Tutorial

Python jest łatwym do nauki, wszechstronnym językiem programowania. Ma wydajne wysoko-poziomowe struktury danych i proste ale efektywne podejście do programowania zorientowanego obiektowo. Elegancka składnia Pythona i dynamiczne typowanie, wraz z jego naturą interpretowania, czyni go idealnym językiem do skryptów i szybkiego rozwijania aplikacji w wielu obszarach na większości platform.

Interpreter Pythona i obszerna biblioteka standardowa są swobodnie dostępne w formie źródeł oraz binarnej dla wszystkich głównych platform na stronie internetowej Pythona, https://www.python.org/, i mogą być dowolnie rozpowszechniane. Ta sama strona zawiera również dystrybucje i odniesienia do wielu wolnych zewnętrznych modułów, programów i narzędzi Pythona oraz dodatkowej dokumentacji.

Interpreter Pythona można łatwo rozszerzyć nowymi funkcjami i typami danych zaimplementowanymi w C lub C++ (lub innych językach wywoływalnych z C). Python jest również odpowiedni jako język rozszerzeń dla konfigurowalnych aplikacji.

Ten tutorial wprowadza nieformalnie czytelnika w podstawowe koncepcje i cechy języka i systemu Python. Pomocnym jest mieć interpreter Pythona pod ręką dla praktycznych doświadczeń, ale wszystkie przykłady są samowystarczalne, więc tutorial może być również czytany off-line.

Opisy standardowych obiektów i modułów znajdziesz w Biblioteka standardowa Pythona. Dokumentacja języka Python daje bardziej formalną definicję języka. Aby pisać rozszerzenia w C lub C++, przeczytaj Rozszerzony i wbudowany interpreter Python i Python/C API Reference Manual. Jest również kilka książek omawiających wyczerpująco Pythona.

Ten tutorial nie próbuje wyczerpująco omówić każdej funkcji Pythona ani nawet każdej często używanej funkcji. Zamiast tego wprowadza wiele funkcjonalności najbardziej wartych zauważenia i da ci dobre zrozumienie smaku i stylu języka. Po przeczytaniu go będziesz w stanie czytać i pisać moduły i programy Pythona oraz będziesz gotowy uczyć się więcej na temat różnych modułów i bibliotek Pythona, opisanych w Biblioteka standardowa Pythona.

Warto również przejrzeć Glosariusz.

- 1. Na zaostrzenie apetytu
- 2. Używanie interpretera Pythona
  - 2.1. Wywoływanie Interpretera
    - 2.1.1. Przekazywanie argumentów
    - 2.1.2. Tryb interaktywny
  - 2.2. Interpreter i jego środowisko
    - 2.2.1. Strona kodowa kodu źródłowego
- 3. Nieformalne wprowadzenie do Pythona
  - 3.1. Używanie Pythona jako kalkulatora
    - 3.1.1. Liczby
    - 3.1.2. Ciągi znaków
    - 3.1.3. Listy
  - 3.2. Pierwsze kroki do programowania
- 4. Więcej narzędzi kontroli przepływu
  - 4.1. Instrukcje `if`
  - 4.2. Instrukcje `for`
  - 4.3. Funkcja `range()`
  - 4.4. `break` i `continue` oraz klauzula `else` w pętlach
  - 4.5. Instrukcje `pass`
  - 4.6. Instrukcje `match`
  - 4.7. Definiowanie funkcji
  - 4.8. Więcej o definiowaniu funkcji
    - 4.8.1. Domyślne wartości argumentów
    - 4.8.2. Argumenty nazwane
    - 4.8.3. Parametry specjalne
      - 4.8.3.1. Argumenty pozycyjne-lub-nazwane
      - 4.8.3.2. Parametry tylko-pozycyjne (positional-only)
      - 4.8.3.3. Argumenty tylko-nazwane (keyword-only)
      - 4.8.3.4. Przykłady funkcji
      - 4.8.3.5. Podsumowanie
    - 4.8.4. Arbitralne listy argumentów
    - 4.8.5. Rozpakowywanie listy argumentów
    - 4.8.6. Wyrażenia Lambda
    - 4.8.7. Napisy dokumentujące (docstringi)
    - 4.8.8. Adnotacje funkcji
  - 4.9. Intermezzo: Styl kodowania
- 5. Struktury danych
  - 5.1. Więcej na temat list
    - 5.1.1. Używanie list jako stosów
    - 5.1.2. Używanie list jako kolejek
    - 5.1.3. Wyrażenia listowe
    - 5.1.4. Zagnieżdżone wyrażenia listowe
  - 5.2. Instrukcja `del`
  - 5.3. Krotki i sekwencje
  - 5.4. Zbiory
  - 5.5. Słowniki
  - 5.6. Techniki pętli
  - 5.7. Więcej na temat warunków
  - 5.8. Porównywanie sekwencji i innych typów
- 6. Moduły
  - 6.1. Więcej o modułach
    - 6.1.1. Wykonywanie modułów jako skryptów
    - 6.1.2. Ścieżka wyszukiwania modułów
    - 6.1.3. „Skompilowane” pliki Pythona
  - 6.2. Moduły standardowe
  - 6.3. Funkcja `dir()`
  - 6.4. Pakiety
    - 6.4.1. Importowanie * z pakietu
    - 6.4.2. Referencje wewnątrz-pakietowe
    - 6.4.3. Pakiety w wielu katalogach
- 7. Wejście i wyjście
  - 7.1. Wymyślniejsze formatowanie wyjścia
    - 7.1.1. f-stringi
    - 7.1.2. Metoda format() ciągu znaków
    - 7.1.3. Ręczne formatowanie ciągów znaków
    - 7.1.4. Stare formatowanie ciągów znaków
  - 7.2. Odczytywanie i zapisywanie plików
    - 7.2.1. Metody obiektów plików
    - 7.2.2. Zapisywanie struktur danych przy użyciu modułu `json`
- 8. Błędy i wyjątki
  - 8.1. Błędy składni
  - 8.2. Wyjątki
  - 8.3. Obsługa wyjątków
  - 8.4. Rzucanie wyjątków
  - 8.5. Łańcuch wyjątków
  - 8.6. Wyjątki zdefiniowane przez użytkownika
  - 8.7. Definiowanie działań porządkujących
  - 8.8. Predefiniowane akcje porządkujące
- 9. Klasy
  - 9.1. Kilka słów o nazwach i obiektach
  - 9.2. Zasięgi widoczności i przestrzenie nazw w Pythonie
    - 9.2.1. Przykład zakresów i przestrzeni nazw
  - 9.3. Pierwsze spojrzenie na klasy
    - 9.3.1. Składnia definicji klasy
    - 9.3.2. Class Objects
    - 9.3.3. Instance Objects
    - 9.3.4. Method Objects
    - 9.3.5. Class and Instance Variables
  - 9.4. Random Remarks
  - 9.5. Inheritance
    - 9.5.1. Multiple Inheritance
  - 9.6. Private Variables
  - 9.7. Odds and Ends
  - 9.8. Iterators
  - 9.9. Generators
  - 9.10. Generator Expressions
- 10. Krótka wycieczka po Bibliotece Standardowej
  - 10.1. Interfejs Systemu Operacyjnego
  - 10.2. Symbole wieloznaczne plików
  - 10.3. Argumenty linii polecenia
  - 10.4. Przekierowanie wyjścia błędu i zakończenie programu
  - 10.5. Dopasowywanie wzorców w napisach
  - 10.6. Funkcje matematyczne
  - 10.7. Dostęp do internetu
  - 10.8. Daty i czas
  - 10.9. Kompresja Danych
  - 10.10. Mierzenie wydajności
  - 10.11. Kontrola jakości
  - 10.12. Dostarczone z bateriami
- 11. Brief Tour of the Standard Library — Part II
  - 11.1. Output Formatting
  - 11.2. Templating
  - 11.3. Working with Binary Data Record Layouts
  - 11.4. Multi-threading
  - 11.5. Logging
  - 11.6. Weak References
  - 11.7. Tools for Working with Lists
  - 11.8. Decimal Floating Point Arithmetic
- 12. Środowiska wirtualne i pakiety
  - 12.1. Wprowadzenie
  - 12.2. Tworzenie Środowisk Wirtualnych
  - 12.3. Zarządzanie pakietami używając pip
- 13. Co dalej?
- 14. Interaktywna edycja danych wejściowych oraz podstawianie z historii
  - 14.1. Uzupełnianie z tabulatorem oraz edycja historii
  - 14.2. Alternatywy dla interaktywnego interpretera
- 15. Arytmetyka liczb zmiennoprzecinkowych: Problemy i ograniczenia
  - 15.1. Błąd reprezentacji
- 16. Dodatek
  - 16.1. Tryb interaktywny
    - 16.1.1. Przechwytywanie błędów
    - 16.1.2. Wykonywalne skrypty Pythona
    - 16.1.3. Plik interaktywnego uruchomienia
    - 16.1.4. Moduły dostosowywania