Python. Nowoczesne programowanie w prostych krokach. Wydanie II - Helion
Tytuł oryginału: Introducing Python: Modern Computing in Simple Packages
Tłumaczenie: Andrzej Watrak
ISBN: 978-83-283-6842-2
stron: 544, Format: 168x237, okładka: miękka
Data wydania: 2020-11-17
Księgarnia: Helion
Cena książki: 57,84 zł (poprzednio: 88,98 zł)
Oszczędzasz: 35% (-31,14 zł)
Python nie jest językiem idealnym, jednak przybywa programistów, którzy uważają go za bliski ideału. Wyróżnia się prostotą i wszechstronnością. Jest wdzięcznym narzędziem do badania danych i tworzenia systemów sztucznej inteligencji, uwielbiają go analitycy, ekonomiści i naukowcy. Może posłużyć do tworzenia stron WWW czy aplikacji specjalnego przeznaczenia. Python należy do najbardziej spójnych i czytelnych języków programowania. Jest przykładem całkiem udanego kompromisu pomiędzy prostotą, łatwością przyswajania i wyjątkową skutecznością. Z pewnością warto się go nauczyć, jednak od początku dobrze jest wpoić sobie nawyki pisania kodu nowoczesnego, wysokiej jakości, zgodnego z dobrą praktyką.
Oto znakomity, przystępny i świetnie napisany podręcznik do nauki Pythona. Opisuje podstawy kodu i struktur danych i stopniowo wprowadza bardziej zaawansowane zagadnienia, takie jak praca z bazami danych i stronami WWW, podstawy działania chmury obliczeniowej, uczenia maszynowego i strumieniowania zdarzeń. Poza standardową biblioteką Pythona przedstawiono tu przydatne zewnętrzne pakiety, dokładniej opisano te najbardziej pomocne. Omówiono dobre praktyki tworzenia, testowania i diagnozowania kodu. Książka zawiera też mnóstwo wskazówek i przykładów kodu. Wyjaśnia pewne szczególne funkcjonalności Pythona, których stosowanie jest o wiele lepszym rozwiązaniem niż adaptowanie technik z innych języków. Nawet jeśli dziś o programowaniu wiesz mniej niż niewiele, dzięki temu podręcznikowi staniesz się prawdziwym pythonowcem!
W tej książce między innymi:
- podstawy Pythona oraz funkcje, moduły i pakiety
- programowanie zorientowane obiektowo
- praca z bazami danych: relacyjnymi i NoSQL
- klienty internetowe, serwery, interfejsy API i usługi
- zarządzanie programami, procesami i wątkami
- implementacja współbieżności i komunikacji sieciowej
Problemy? Rozwiąż je po pythonowsku!
Osoby które kupowały "Python. Nowoczesne programowanie w prostych krokach. Wydanie II", wybierały także:
- Lider wystarczaj 47,78 zł, (12,90 zł -73%)
- Internet a prawo - jak si 46,07 zł, (12,90 zł -72%)
- Bioksi 44,48 zł, (12,90 zł -71%)
- Socjotechnika. Sztuka zdobywania władzy nad umysłami. Wydanie II 44,48 zł, (12,90 zł -71%)
- Świat w skali mikro. Wszystko o modelarstwie 39,67 zł, (11,90 zł -70%)
Spis treści
Python. Nowoczesne programowanie w prostych krokach. Wydanie II -- spis treści
Wstęp 21
CZĘŚĆ I. PODSTAWY PYTHONA
1. Przedsmak Pythona 29
- Zagadki 29
- Kilka małych programów 31
- Większy program 33
- Python w praktyce 36
- Python i inne języki 37
- Dlaczego właśnie Python? 39
- Kiedy nie używać Pythona? 41
- Wersje Pythona 2 i 3 42
- Instalacja Pythona 42
- Uruchomienie Pythona 42
- Interaktywny interpreter 43
- Skrypty 43
- Co dalej? 44
- Twoja chwila zen 44
- Już wkrótce 45
- Do zrobienia 45
2. Dane - typy, wartości, zmienne i nazwy 47
- Dane w Pythonie to obiekty 47
- Typy danych 48
- Mutowalność 49
- Wartości 49
- Zmienne 50
- Przypisania 51
- Zmienne to nazwy, a nie miejsca w pamięci 52
- Przypisania wielokrotne 55
- Ponowne przypisania 55
- Kopiowanie 55
- Nadawaj zmiennym właściwe nazwy 56
- Już wkrótce 57
- Do zrobienia 57
3. Liczby 59
- Typ logiczny 59
- Typ całkowity 60
- Literały 60
- Działania 61
- Zmienne 63
- Kolejność działań 65
- Podstawa systemu liczbowego 65
- Konwersja typów 68
- Jak duża może być liczba całkowita? 69
- Typ zmiennoprzecinkowy 70
- Funkcje matematyczne 71
- Już wkrótce 71
- Do zrobienia 72
4. Podejmowanie decyzji, czyli instrukcja if 73
- Komentowanie za pomocą znaku # 73
- Kontynuacja wiersza za pomocą znaku \ 74
- Sprawdzanie za pomocą instrukcji if, elif i else 75
- Co oznacza True? 77
- Wielokrotne sprawdzanie za pomocą operatora in 78
- Nowość: operator walrus 79
- Już wkrótce 80
- Do zrobienia 80
5. Ciągi znaków 81
- Tworzenie ciągu znaków za pomocą cudzysłowów i apostrofów 81
- Tworzenie ciągu za pomocą funkcji str() 84
- Ucieczka ze znakiem \ 84
- Łączenie ciągów za pomocą znaku + 85
- Powielanie ciągu za pomocą znaku * 86
- Wyodrębnianie znaku za pomocą nawiasów [] 86
- Wyodrębnianie fragmentu ciągu za pomocą wycinka 87
- Określanie długości ciągu za pomocą funkcji len() 89
- Dzielenie ciągu za pomocą funkcji split() 89
- Łączenie ciągów za pomocą funkcji join() 90
- Zastępowanie fragmentów ciągu za pomocą funkcji replace() 90
- Przycinanie ciągu za pomocą funkcji strip() 91
- Przeszukiwanie i wybieranie ciągów znaków 92
- Wielkości liter 93
- Wyrównywanie ciągu znaków 94
- Formatowanie ciągów znaków 94
- Formatowanie w starym stylu za pomocą znaku % 94
- Formatowanie w starym stylu za pomocą znaków {} i funkcji format() 97
- Najnowszy styl formatowania: f-ciągi 98
- Więcej o ciągach 99
- Już wkrótce 99
- Do zrobienia 100
6. Pętle while i for 101
- Powtarzanie operacji za pomocą instrukcji while 101
- Przerywanie pętli za pomocą instrukcji break 102
- Powrót na początek pętli za pomocą instrukcji continue 102
- Sprawdzanie przerwania pętli za pomocą instrukcji else 103
- Iterowanie za pomocą instrukcji for i in 103
- Przerywanie pętli za pomocą instrukcji break 104
- Powrót na początek pętli za pomocą instrukcji continue 104
- Sprawdzanie przerwania pętli za pomocą instrukcji else 104
- Generowanie sekwencji liczb za pomocą funkcji range() 105
- Inne iteratory 106
- Już wkrótce 106
- Do zrobienia 106
7. Krotki i listy 107
- Krotki 107
- Tworzenie krotek za pomocą przecinków i nawiasów 107
- Tworzenie krotek za pomocą funkcji tuple() 109
- Łączenie krotek za pomocą znaku dodawania 109
- Powielanie elementów krotki za pomocą znaku mnożenia 109
- Porównywanie krotek 109
- Iterowanie krotek za pomocą instrukcji for i in 109
- Modyfikowanie krotek 110
- Listy 110
- Tworzenie list za pomocą nawiasów kwadratowych 110
- Tworzenie i przekształcanie list za pomocą funkcji list() 111
- Tworzenie list z ciągów za pomocą funkcji split() 111
- Odczytywanie elementu listy za pomocą nawiasów kwadratowych i indeksu 112
- Wyodrębnianie elementów listy za pomocą wycinków 112
- Dołączanie elementu do listy za pomocą funkcji append() 113
- Wstawianie elementu wewnątrz listy za pomocą funkcji insert() 113
- Powielanie elementów listy za pomocą znaku mnożenia 114
- Łączenie list za pomocą funkcji extend() i znaku dodawania 114
- Modyfikowanie elementu listy za pomocą nawiasów kwadratowych i indeksu 114
- Modyfikowanie elementów listy za pomocą wycinka 115
- Usuwanie elementu listy za pomocą instrukcji del i indeksu 115
- Usuwanie elementu o zadanej wartości za pomocą funkcji remove() 116
- Odczytywanie i usuwanie elementu listy za pomocą funkcji pop() 116
- Usuwanie wszystkich elementów listy za pomocą funkcji clear() 116
- Wyszukiwanie elementu o zadanej wartości za pomocą funkcji index() 117
- Sprawdzanie zawartości listy za pomocą instrukcji in 117
- Zliczanie wystąpień wartości za pomocą funkcji count() 117
- Przekształcenie listy w ciąg znaków za pomocą funkcji join() 117
- Zmienianie kolejności elementów za pomocą funkcji sort() i sorted() 118
- Sprawdzanie długości listy za pomocą funkcji len() 119
- Przypisywanie listy zmiennej za pomocą znaku równości 119
- Kopiowanie listy za pomocą funkcji copy() i list() oraz wycinka 119
- Kopiowanie zawartości listy za pomocą funkcji deepcopy() 120
- Porównywanie list 121
- Iterowanie listy za pomocą instrukcji for i in 121
- Iterowanie kilku list za pomocą funkcji zip() 122
- Tworzenie listy za pomocą wyrażenia listowego 123
- Listy list 125
- Krotki a listy 126
- Nie ma wyrażeń krotkowych 126
- Już wkrótce 126
- Do zrobienia 127
8. Słowniki i zbiory 129
- Słowniki 129
- Tworzenie słownika za pomocą nawiasów klamrowych 129
- Tworzenie słownika za pomocą funkcji dict() 130
- Przekształcanie struktury w słownik za pomocą funkcji dict() 130
- Dodawanie i zmienianie elementów słownika za pomocą nawiasów kwadratowych i klucza 131
- Odczytywanie wartości za pomocą nawiasów kwadratowych i klucza oraz funkcji get() 132
- Odczytywanie wszystkich kluczy za pomocą funkcji keys() 133
- Odczytywanie wszystkich wartości za pomocą funkcji values() 133
- Odczytywanie wszystkich par klucz-wartość za pomocą funkcji items() 133
- Odczytywanie długości słownika za pomocą funkcji len() 133
- Łączenie słowników za pomocą nawiasów klamrowych i znaków mnożenia 134
- Łączenie słowników za pomocą funkcji update() 134
- Usuwanie elementu słownika za pomocą instrukcji del i klucza 135
- Odczytywanie i usuwanie elementu słownika za pomocą funkcji pop() 135
- Usuwanie wszystkich elementów słownika za pomocą funkcji clear() 135
- Sprawdzanie dostępności klucza za pomocą instrukcji in 136
- Przypisywanie wartości za pomocą znaku równości 136
- Kopiowanie słownika za pomocą funkcji copy() 136
- Kopiowanie zawartości słownika za pomocą funkcji deepcopy() 137
- Porównywanie słowników 138
- Iterowanie elementów słownika za pomocą instrukcji for i in 138
- Wyrażenia słownikowe 139
- Zbiory 140
- Tworzenie zbioru za pomocą funkcji set() 140
- Przekształcanie struktury w zbiór za pomocą funkcji set() 141
- Odczytywanie długości zbioru za pomocą funkcji len() 141
- Dodawanie elementów do zbioru za pomocą funkcji add() 141
- Usuwanie elementów zbioru za pomocą funkcji remove() 142
- Iterowanie zbioru za pomocą instrukcji for i in 142
- Sprawdzanie dostępności elementu za pomocą instrukcji in 142
- Kombinacje wartości i operatory 143
- Wyrażenia zbiorowe 145
- Tworzenie niemutowalnych zbiorów za pomocą funkcji frozenset() 146
- Poznane struktury danych 146
- Tworzenie większych struktur 147
- Już wkrótce 148
- Do zrobienia 148
9. Funkcje 149
- Definiowanie funkcji za pomocą instrukcji def 149
- Wywołanie funkcji z nawiasami 150
- Argumenty i parametry 150
- Wartość None jest przydatna 152
- Argumenty pozycyjne 153
- Argumenty nazwane 153
- Domyślne wartości parametrów 154
- Rozbijanie/zbieranie argumentów pozycyjnych za pomocą znaku * 155
- Rozbijanie/zbieranie argumentów nazwanych za pomocą znaków ** 156
- Stosowanie wyłącznie argumentów nazwanych 157
- Argumenty mutowalne i niemutowalne 158
- Komentarze dokumentacyjne 158
- Funkcje jako typy pierwszoklasowe 159
- Funkcje wewnętrzne 161
- Domknięcia 161
- Funkcje anonimowe: wyrażenia lambda 162
- Generatory 163
- Funkcje generatorowe 163
- Wyrażenia generatorowe 164
- Dekoratory 164
- Przestrzenie nazw i zakresy widoczności 166
- Podwójne znaki podkreślenia w nazwach 168
- Rekurencja 169
- Funkcje asynchroniczne 170
- Wyjątki 170
- Obsługiwanie wyjątków za pomocą instrukcji try i except 171
- Definiowanie własnych wyjątków 172
- Już wkrótce 173
- Do zrobienia 173
10. Obiekty i klasy 175
- Czym jest obiekt? 175
- Proste obiekty 176
- Definiowanie klasy 176
- Atrybuty 177
- Metody 178
- Inicjacja obiektu 178
- Dziedziczenie klas 179
- Dziedziczenie klasy nadrzędnej 179
- Nadpisywanie metod 181
- Dodawanie metod 182
- Odwołanie do klasy nadrzędnej za pomocą metody super() 182
- Dziedziczenie wielu klas 183
- Domieszki 185
- Argument self 185
- Dostęp do atrybutów 186
- Dostęp bezpośredni 186
- Gettery i settery 186
- Dostęp do atrybutów za pośrednictwem właściwości 187
- Właściwości zwracające wyliczane wartości 188
- Prywatność dzięki modyfikacji nazwy 189
- Atrybuty klas i obiektów 190
- Rodzaje metod 191
- Metody instancji 191
- Metody klasy 191
- Metody statyczne 192
- Kacze typowanie 192
- Magiczne metody 194
- Agregowanie i komponowanie klas 196
- Kiedy stosować obiekty, a kiedy inne struktury 197
- Nazwane krotki 198
- Klasy danych 199
- Pakiet attrs 200
- Już wkrótce 201
- Do zrobienia 201
11. Moduły, pakiety i inne rzeczy 203
- Moduły i instrukcja import 203
- Importowanie modułu 203
- Importowanie modułu z przemianowaniem 205
- Importowanie tylko tego, co jest potrzebne 205
- Pakiety 206
- Ścieżka wyszukiwania modułów 207
- Importowanie względne i bezwzględne 208
- Przestrzenie pakietów 208
- Moduły a obiekty 209
- Przydatne rzeczy w standardowej bibliotece Pythona 210
- Obsługa brakujących kluczy za pomocą funkcji setdefault() i defaultdict() 210
- Zliczanie elementów za pomocą klasy Counter 212
- Porządkowanie elementów według klucza za pomocą klasy OrderedDict 213
- Stos + kolejka == deque 213
- Iterowanie struktur danych za pomocą modułu itertools 214
- Czytelne wyświetlanie za pomocą funkcji pprint() 215
- Wartości losowe 216
- Więcej narzędzi: zewnętrzny kod 217
- Już wkrótce 217
- Do zrobienia 217
CZĘŚĆ II. PYTHON W PRAKTYCE
12. Żonglowanie danymi 221
- Dane tekstowe - kodowanie Unicode 222
- Kodowanie Unicode w Pythonie 3 222
- Schemat UTF-8 225
- Kodowanie znaków 225
- Dekodowanie znaków 227
- Kody HTML 228
- Normalizowanie znaków 229
- Dodatkowe informacje 230
- Dane tekstowe - wyrażenia regularne 230
- Wyszukiwanie dokładnego początkowego dopasowania za pomocą funkcji match() 231
- Wyszukiwanie pierwszego dopasowania za pomocą funkcji search() 233
- Wyszukiwanie wszystkich dopasowań za pomocą funkcji findall() 233
- Dzielenie ciągu według dopasowań za pomocą funkcji split() 233
- Zastępowanie dopasowań za pomocą funkcji sub() 234
- Wzorce: znaki specjalne 234
- Wzorce: specyfikatory 235
- Wzorce: określanie formatu wyniku funkcji 238
- Dane binarne 238
- Struktury bytes i bytearray 238
- Konwertowanie danych binarnych za pomocą modułu struct 240
- Inne narzędzia do przetwarzania danych binarnych 242
- Konwertowanie bajtów i ciągów znaków za pomocą modułu binascii 243
- Operatory bitowe 243
- Już wkrótce 244
- Do zrobienia 244
13. Data i czas 247
- Rok przestępny 248
- Moduł datetime 248
- Moduł time 251
- Odczytywanie i wyświetlanie daty i czasu 253
- Wszystkie przekształcenia 256
- Alternatywne moduły 257
- Już wkrótce 257
- Do zrobienia 257
14. Pliki i katalogi 259
- Zapisywanie i odczytywanie plików 259
- Tworzenie i otwieranie plików za pomocą funkcji open() 259
- Zapisywanie danych tekstowych za pomocą instrukcji print() 260
- Zapisywanie danych tekstowych za pomocą instrukcji write() 261
- Odczytywanie pliku tekstowego za pomocą funkcji read(), readline() i readlines() 262
- Zapisywanie danych binarnych za pomocą funkcji write() 264
- Odczytywanie danych binarnych za pomocą funkcji read() 264
- Automatyczne zamykanie pliku za pomocą instrukcji with 265
- Przesuwanie wskaźnika za pomocą funkcji seek() 265
- Mapowanie pamięci 267
- Operacje na plikach 267
- Sprawdzanie dostępności pliku za pomocą funkcji exists() 267
- Sprawdzanie rodzaju elementu za pomocą funkcji isfile() 267
- Kopiowanie pliku za pomocą funkcji copy() 268
- Zmienianie nazwy pliku za pomocą funkcji rename() 268
- Tworzenie odnośników za pomocą funkcji link() i symlink() 268
- Zmienianie uprawnień do pliku za pomocą funkcji chmod() 269
- Zmienianie właściciela pliku za pomocą funkcji chown() 269
- Usuwanie pliku za pomocą funkcji remove() 269
- Operacje na katalogach 270
- Tworzenie katalogu za pomocą funkcji mkdir() 270
- Usuwanie katalogu za pomocą funkcji rmdir() 270
- Odczytywanie zawartości katalogu za pomocą funkcji listdir() 270
- Zmienianie katalogu za pomocą funkcji chdir() 271
- Wyszukiwanie plików i katalogów za pomocą funkcji glob() 271
- Nazwy ścieżek 271
- Uzyskiwanie ścieżki za pomocą funkcji abspath() 272
- Uzyskiwanie ścieżki na podstawie symbolicznego odnośnika za pomocą funkcji realpath() 272
- Tworzenie ścieżki za pomocą funkcji os.path.join() 272
- Moduł pathlib 273
- Klasy BytesIO i StringIO 274
- Już wkrótce 275
- Do zrobienia 275
15. Dane w czasie, czyli procesy i współbieżność 277
- Programy i procesy 277
- Tworzenie procesu za pomocą modułu subprocess 278
- Tworzenie procesu za pomocą modułu multiprocessing 279
- Przerywanie procesu za pomocą funkcji terminate() 280
- Uzyskiwanie informacji systemowych za pomocą modułu os 280
- Uzyskiwanie informacji o procesie za pomocą pakietu psutil 281
- Automatyzacja poleceń 282
- Pakiet invoke 282
- Inne przydatne pakiety 283
- Współbieżność 283
- Kolejki 284
- Procesy 285
- Wątki 285
- Moduł concurrent.futures 288
- Zielone wątki i biblioteka gevent 290
- Moduł twisted 293
- Biblioteka asyncio 294
- Biblioteka Redis 294
- Nie tylko kolejki 297
- Już wkrótce 298
- Do zrobienia 298
16. Dane w pudełku, czyli trwałe zapisywanie 299
- Płaskie pliki tekstowe 299
- Dopełniane pliki tekstowe 299
- Tabelaryczne pliki tekstowe 300
- Format CSV 300
- Format XML 302
- Dane XML i bezpieczeństwo systemu 304
- Format HTML 305
- Format JSON 305
- Format YAML 308
- Moduł tablib 309
- Biblioteka Pandas 309
- Pliki konfiguracyjne 310
- Pliki binarne 311
- Dopełniane pliki binarne i mapowanie pamięci 311
- Arkusze kalkulacyjne 312
- Format HDF5 312
- Format TileDB 312
- Relacyjne bazy danych 312
- Język SQL 313
- Interfejs DB-API 315
- Baza SQLite 315
- Baza MySQL 317
- Baza PostgreSQL 317
- Biblioteka SQLAlchemy 318
- Inne pakiety do obsługi baz danych 323
- Bazy danych NoSQL 323
- Rodzina formatów dbm 323
- Baza Memcached 324
- Baza Redis 325
- Bazy dokumentowe 331
- Bazy danych czasowych 332
- Bazy grafowe 332
- Inne bazy NoSQL 333
- Bazy pełnotekstowe 333
- Już wkrótce 334
- Do zrobienia 334
17. Dane w przestrzeni, czyli sieć 335
- Protokoły sieciowe 335
- Gniazda sieciowe 336
- Narzędzie Scapy 340
- Narzędzie Netcat 341
- Zasady komunikacji sieciowej 341
- Zasada "zapytanie-odpowiedź" 341
- Biblioteka ZeroMQ 342
- Inne narzędzia do przesyłania komunikatów 345
- Zasada "publikuj-subskrybuj" 346
- Serwer Redis 346
- Biblioteka ZeroMQ 347
- Inne narzędzia typu "publikuj-subskrybuj" 349
- Usługi internetowe 349
- Usługa DNS 349
- Moduły do obsługi poczty e-mail 350
- Inne protokoły 350
- Usługi WWW i interfejsy API 351
- Serializacja danych 351
- Moduł pickle 352
- Inne formaty serializacyjne 353
- Protokół RPC 353
- Protokół XML-RPC 354
- Protokół JSON-RPC 355
- Biblioteka MessagePack RPC 356
- Biblioteka zerorpc 357
- Biblioteka gRPC 357
- Biblioteka Twirp 358
- Narzędzia do zdalnego zarządzania 358
- Big Fat Data 359
- Hadoop 359
- Spark 359
- Disco 360
- Dask 360
- Chmury 360
- Amazon Web Services 361
- Google Cloud 362
- Microsoft Azure 362
- OpenStack 362
- Docker 362
- Kubernetes 362
- Już wkrótce 363
- Do zrobienia 363
18. Sieć WWW 365
- Klienci internetowi 366
- Testowanie strony za pomocą programu telnet 367
- Testowanie strony za pomocą programu curl 368
- Testowanie strony za pomocą programu httpie 369
- Testowanie strony za pomocą programu httpbin 369
- Standardowe biblioteki WWW w Pythonie 369
- Nie tylko standardowa biblioteka: moduł requests 371
- Serwery WWW 373
- Najprostszy serwer WWW 373
- Interfejs WSGI 374
- Interfejs ASGI 375
- Serwer Apache 375
- Serwer NGINX 376
- Inne serwery WWW dla języka Python 377
- Platformy dla serwerów WWW 377
- Platforma Bottle 378
- Platforma Flask 380
- Platforma Django 384
- Inne platformy 384
- Platformy bazodanowe 385
- Usługi WWW i automatyzacja 385
- Moduł webbrowser 386
- Moduł webview 386
- Interfejsy API i REST 387
- Automatyczne wyszukiwanie danych 388
- Scrapy 388
- BeautifulSoup 388
- Moduł requests-html 389
- Obejrzyjmy film 390
- Już wkrótce 391
- Do zrobienia 392
19. Stań się pythonistą 393
- O programowaniu 393
- Skąd wziąć kod? 394
- Instalowanie pakietów 394
- Program pip 395
- Program virtualenv 395
- Program pipenv 396
- Menedżer pakietów 396
- Instalacja plików źródłowych 396
- Środowiska IDE 397
- IDLE 397
- PyCharm 397
- IPython 398
- Jupyter Notebook 399
- JupyterLab 399
- Nazwy i dokumentacja 399
- Wskazówki typów 401
- Testy 401
- Programy pylint, pyflakes, flake8 i pep8 402
- Pakiet unittest 403
- Pakiet doctest 407
- Pakiet nose 408
- Inne platformy testujące 409
- Ciągła integracja 409
- Diagnostyka kodu 410
- Funkcja print() 410
- Dekoratory 411
- Moduł pdb 412
- Funkcja breakpoint() 417
- Rejestrowanie komunikatów o błędach 417
- Optymalizacja kodu 419
- Pomiary czasu 419
- Algorytmy i struktury danych 422
- Cython, NumPy i rozszerzenia C 423
- PyPy 424
- Numba 424
- Kontrola wersji kodu 425
- Mercurial 425
- Git 425
- Rozpowszechnianie programów 428
- Dowiedz się więcej 428
- Książki 428
- Strony internetowe 429
- Grupy 429
- Konferencje 429
- Praca 430
- Już wkrótce 430
- Do zrobienia 430
20. Python w sztuce 431
- Grafika dwuwymiarowa 431
- Standardowa biblioteka 431
- Biblioteki PIL i Pillow 432
- ImageMagick 435
- Grafika trójwymiarowa 436
- Animacja trójwymiarowa 436
- Graficzne interfejsy użytkownika 436
- Wykresy i wizualizacja danych 438
- Matplotlib 438
- Seaborn 440
- Bokeh 441
- Gry 442
- Dźwięk i muzyka 442
- Już wkrótce 443
- Do zrobienia 443
21. Python w biznesie 445
- Pakiety biurowe 445
- Operacje biznesowe 446
- Przetwarzanie danych biznesowych 447
- Wyodrębnianie, przekształcanie i ładowanie danych 447
- Weryfikacja poprawności danych 450
- Dodatkowe źródła informacji 451
- Otwarte pakiety biznesowe 451
- Python i finanse 451
- Bezpieczeństwo danych finansowych 452
- Mapy 452
- Formaty danych 453
- Wyświetlanie map w formacie shapefile 453
- Geopandas 455
- Inne pakiety kartograficzne 457
- Aplikacje i dane 458
- Już wkrótce 459
- Do zrobienia 459
22. Python w nauce 461
- Matematyka i statystyka w standardowej bibliotece 461
- Funkcje matematyczne 461
- Liczby zespolone 463
- Precyzja obliczeń i moduł decimal 464
- Działania na ułamkach zwykłych 464
- Klasa array, czyli spakowana sekwencja wartości 465
- Prosta statystyka w module statistics 465
- Mnożenie macierzy 465
- Naukowy Python 465
- Pakiet NumPy 466
- Tworzenie tablicy za pomocą funkcji array() 467
- Tworzenie tablicy za pomocą funkcji arange() 467
- Tworzenie tablicy za pomocą funkcji zeros(), ones() i random() 468
- Zmienianie kształtu tablicy za pomocą metody reshape() 469
- Odwoływanie się do elementów tablicy za pomocą nawiasów [] 469
- Działania na tablicach 470
- Algebra liniowa 471
- Biblioteka SciPy 472
- Biblioteka SciKit 472
- Biblioteka Pandas 473
- Python w różnych dziedzinach nauki 473
- Już wkrótce 474
- Do zrobienia 474
A. Sprzęt i oprogramowanie dla początkującego programisty 475
B. Instalacja Pythona 3 485
C. Coś z zupełnie innej beczki: asynchroniczność 493
D. Rozwiązania zadań 499
E. Ściągawka 539