Python
Nowoczesne programowanie w
prostych krokach
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
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
544
strony, Format: 17.0x24.0cm, oprawa miękka