Python Tutorial
***************

Wskazówka:

  Ten tutorial jest przeznaczony dla *programistów*, którzy są
  nowicjuszami w języku Python, **nie** *początkujących*, którzy są
  nowicjuszami w programowaniu.

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 nieformalnie wprowadza czytelnika w podstawowe pojęcia i
funkcje języka i systemu Python. Należy pamiętać, że wymaga on
podstawowej wiedzy na temat programowania. Pomocne jest posiadanie pod
ręką interpretera Pythona do praktycznego doświadczenia, ale wszystkie
przykłady są samowystarczalne, więc tutorial może być również czytany
offline.

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ć Słownik.

* 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. Tekst

    * 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. Instrukcje "break" oraz "continue"

  * 4.5. Klauzule "else" na pętlach

  * 4.6. Instrukcje "pass"

  * 4.7. Instrukcje "match"

  * 4.8. Definiowanie funkcji

  * 4.9. Więcej o definiowaniu funkcji

    * 4.9.1. Domyślne wartości argumentów

    * 4.9.2. Argumenty nazwane

    * 4.9.3. Parametry specjalne

      * 4.9.3.1. Argumenty pozycyjne-lub-nazwane

      * 4.9.3.2. Parametry tylko-pozycyjne (positional-only)

      * 4.9.3.3. Argumenty tylko-nazwane (keyword-only)

      * 4.9.3.4. Przykłady funkcji

      * 4.9.3.5. Podsumowanie

    * 4.9.4. Arbitralne listy argumentów

    * 4.9.5. Rozpakowywanie listy argumentów

    * 4.9.6. Wyrażenia Lambda

    * 4.9.7. Napisy dokumentujące (docstringi)

    * 4.9.8. Adnotacje funkcji

  * 4.10. 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.1.5. Rozpakowywanie w listach i list comprehensions

  * 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

  * 8.9. Rzucanie i obsługa wielu niepowiązanych wyjątków

  * 8.10. Wzbogacanie wyjątków o notatki

* 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. Obiekty klas

    * 9.3.3. Obiekty instancji

    * 9.3.4. Obiekty metod

    * 9.3.5. Zmienne klas i instancji

  * 9.4. Uwagi losowe

  * 9.5. Dziedziczenie

    * 9.5.1. Dziedziczenie wielokrotne

  * 9.6. Zmienne prywatne

  * 9.7. Przypadki losowe

  * 9.8. Iteratory

  * 9.9. Generatory

  * 9.10. generator wyrażenia

* 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. Krótka wycieczka po bibliotece standardowej --- część II

  * 11.1. Formatowanie wyjścia

  * 11.2. Szablonowanie

  * 11.3. Praca z układami rekordów danych binarnych

  * 11.4. Wielowątkowość

  * 11.5. Logowanie

  * 11.6. Wsparcie słabych odniesień

  * 11.7. Narzędzia do pracy z listami

  * 11.8. Dziesiętna arytmetyka zmiennoprzecinkowa

* 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
