Opis
W porównaniu z innymi językami programowania Python wyróżnia się prostotą i zaskakującymi możliwościami. Używa się go do analizy danych, budowania sztucznej inteligencji, tworzenia stron WWW, jak również w badaniach naukowych. Właściwości tego języka sprawiają, że kod trzeba pisać uważnie, szczególnie w dużych projektach. Tymczasem trudno jest znaleźć odpowiednio dobre źródło informacji o sposobach tworzenia kodu wysokiej jakości. Publikacje dotyczące dobrych praktyk kodowania w Pythonie są nieliczne, a ich jakość nieraz pozostawia wiele do życzenia. Dodatkowy problem wynika z wszechstronności Pythona: jest wykorzystywany w wielu dziedzinach i trudno wskazać wspólne dla nich wzorce programistyczne. Ta książka jest znakomitym przewodnikiem, dzięki któremu zaczniesz tworzyć wydajne i bezbłędne aplikacje w Pythonie. Zaczniesz od formatowania i dokumentowania kodu, umiejętnego stosowania wbudowanych struktur, stosowania modułów i metaklas. W ten sposób nauczysz się pisać uporządkowany kod. Potem poznasz nowe funkcjonalności języka Python i dowiesz się, jak efektywnie z nich korzystać. Następnie dowiesz się, jak wykorzystywać zaawansowane cechy języka, takie jak programowanie asynchroniczne, określanie typów danych i obsługa ścieżek, a także jak diagnozować kod, wykonywać testy jednostkowe i integracyjne oraz przygotowywać kod do uruchomienia w środowisku produkcyjnym. Na końcu poznasz najważniejsze narzędzia przeznaczone do szybkiego tworzenia kodu, zarządzania jego wersjami i weryfikowania poprawności. W tej książce między innymi: właściwe wykorzystywanie wyrażeń i instrukcji tworzenie własnych słowników zaawansowane struktury danych pisanie najlepszych modułów, klas i funkcji asynchroniczne wywoływanie funkcji Python: kodowanie jest sztuką! O autorze Sunil Kapil od dziesięciu lat tworzy aplikacje produkcyjne w Pythonie i kilku innych językach. Zajmuje się głównie oprogramowaniem dla usług internetowych i mobilnych. Jest pasjonatem otwartego oprogramowania i aktywnie uczestniczy w projektach open source. Ponadto działa w organizacjach non profit, w których nieodpłatnie zajmuje się projektami informatycznymi. Często występuje jako prelegent na konferencjach, zazwyczaj mówi wtedy o Pythonie. Prowadzi też stronę o inżynierii oprogramowania, przydatnych narzędziach i technikach. Spis treści O autorze 7 O korektorze merytorycznym 8 Podziękowania 9 Wprowadzenie 11 Rozdział 1. Kodowanie pythoniczne 13 Tworzenie pythonicznego kodu 13 Nazewnictwo 14 Wyrażenia i instrukcje 16 Pythoniczny styl kodowania 19 Komentarze dokumentacyjne 24 Komentarze dokumentacyjne do modułów 26 Komentarze dokumentacyjne do klas 26 Komentarze dokumentacyjne do funkcji 27 Przydatne narzędzia dokumentacyjne 28 Pythoniczne struktury sterujące 28 Wyrażenia listowe 28 Nie twórz skomplikowanych wyrażeń listowych 29 Kiedy stosować wyrażenia lambda? 31 Kiedy stosować generatory, a kiedy wyrażenia listowe? 31 Dlaczego nie należy stosować instrukcji else w pętlach? 32 Dlaczego warto stosować funkcję range() w języku Python 3? 34 Zgłaszanie wyjątków 35 Często zgłaszane wyjątki 36 Obsługuj wyjątki za pomocą instrukcji finally 37 Twórz własne klasy wyjątków 37 Obsługuj konkretne wyjątki 39 Zwracaj uwagę na zewnętrzne wyjątki 40 Twórz jak najmniejsze bloki try 41 Podsumowanie 42 Rozdział 2. Struktury danych 43 Popularne struktury danych 43 Zbiory i wydajny kod 43 Przetwarzanie danych za pomocą struktury namedtuple 45 Typ str i znaki diakrytyczne 47 Zamiast list stosuj iteratory 48 Przetwarzaj listy za pomocą funkcji zip() 50 Wykorzystuj zalety wbudowanych funkcji 51 Zalety słownika 53 Kiedy używać słownika zamiast innych struktur? 53 Kolekcje 53 Słowniki uporządkowany, domyślny i zwykły 56 Słownik jako odpowiednik instrukcji switch 57 Scalanie słowników 58 Czytelne wyświetlanie zawartości słownika 59 Podsumowanie 60 Rozdział 3. Jak pisać lepsze funkcje i klasy? 61 Funkcje 61 Twórz małe funkcje 61 Twórz generatory 63 Używaj wyjątku zamiast wyniku None 64 Stosuj w argumentach klucze i wartości domyślne 65 Nie twórz funkcji jawnie zwracających wynik None 66 Krytycznie podchodź do tworzonych funkcji 68 Stosuj w wyrażeniach funkcje lambda 70 Klasy 71 Jak duża powinna być klasa? 71 Struktura klasy 72 Właściwe użycie dekoratora @property 74 Kiedy należy stosować metody statyczne? 75 Dziedziczenie klas abstrakcyjnych 76 Odwołania do stanu klasy przy użyciu dekoratora @classmethod 77 Atrybuty publiczne zamiast prywatnych 78 Podsumowanie 79 Rozdział 4. Praca z modułami i metaklasami 81 Moduły i metaklasy 81 Porządkowanie kodu za pomocą modułów 82 Zalety pliku __init__.py 84 Importowanie funkcji i klas z modułów 86 Blokowanie importu całego modułu za pomocą metaklasy __all__ 87 Kiedy stosować metaklasy? 88 Weryfikowanie podklas za pomocą metody __new__() 89 Dlaczego atrybut __slots__ jest tak przydatny? 91 Modyfikowanie funkcjonowania klasy za pomocą metaklasy 93 Deskryptory w języku Python 94 Podsumowanie 96 Rozdział 5. Dekoratory i menedżery kontekstu 97 Dekoratory 97 Czym są dekoratory i dlaczego są tak przydatne? 98 Korzystanie z dekoratorów 99 Modyfikowanie działania funkcji za pomocą dekoratorów 101 Stosowanie kilku dekoratorów jednocześnie 102 Dekorowanie funkcji z argumentami 103 Używaj dekoratorów z biblioteki 104 Dekoratory obsługujące stan klasy i weryfikujące poprawność danych 106 Menedżery kontekstu 108 Zalety menedżerów kontekstu 108 Tworzenie menedżera kontekstu od podstaw 109 Tworzenie menedżera kontekstu za pomocą biblioteki contextlib 111 Praktyczne przykłady użycia menedżera kontekstu 111 Podsumowanie 114 Rozdział 6. Generatory i iteratory 115 Zalety generatorów i iteratorów 115 Iteratory 115 Generatory 117 Kiedy stosować iteratory? 118 Moduł itertools 119 Dlaczego generatory są tak przydatne? 121 Wyrażenia listowe i iteratory 122 Zalety instrukcji yield 122 Instrukcja yield from 123 Instrukcja yield jest szybka 123 Podsumowanie 124 Rozdział 7. Nowe funkcjonalności języka Python 125 Programowanie asynchroniczne 125 Wprowadzenie do programowania asynchronicznego 126 Jak to działa? 128 Obiekty oczekiwalne 133 Biblioteki do tworzenia kodu asynchronicznego 139 Python i typy danych 143 Typy danych w Pythonie 143 Moduł typing 144 Czy typy danych spowalniają kod? 145 Jak dzięki modułowi typing można pisać lepszy kod? 146 Metoda super() 147 Lepsza obsługa ścieżek dzięki bibliotece pathlib 147 print() jest teraz funkcją 147 f-ciągi 147 Obowiązkowe argumenty pozycyjne 148 Kontrolowana kolejność elementów w słownikach 148 Iteracyjne rozpakowywanie struktur 149 Podsumowanie 149 Rozdział 8. Diagnostyka i testy kodu 151 Diagnostyka 151 Narzędzia diagnostyczne 152 Funkcja breakpoint() 155 Moduł logging zamiast funkcji print() 155 Identyfikowanie słabych punktów kodu za pomocą metryk 159 Do czego przydaje się środowisko IPython? 159 Testy 161 Dlaczego testowanie kodu jest ważne? 161 Biblioteki pytest i unittest 161 Testowanie oparte na właściwościach 164 Tworzenie raportów z testów 165 Automatyzacja testów jednostkowych 166 Przygotowanie kodu do uruchomienia w środowisku produkcyjnym 166 Sprawdzanie pokrycia kodu testami 167 Program virtualenv 168 Podsumowanie 169 Dodatek. Niezwykłe narzędzia dla języka Python 171 Sphinx 171 Coverage.py 172 pre-commit 173 Pyenv 173 Jupyter Lab 174 Pycharm/VSCode/Sublime 174 Flake8 i Pylint 175
Informatyka
m jak miłość ala i rafał, umowa barterowa z osobą fizyczną, ustrój polityczny korei północnej, teledyski lady pank, światła mgielne, polska norwegia memorial online, róg wikinga, pociag goleniow szczecin, energylandia promocja, oferta pracy elektryk, strajk nauczycieli 2008, polski ład dwa etaty, minimalne wynagrodzenie netto, mocak kraków godziny otwarcia, kamil parol, kwaśniewski goleń, wniosek o rentę zus, co warto zobaczyc na podkarpaciu, tuwim do prostego człowieka tekst, jak znalezc swoj nip, jak zwolnić pracownika który nabył prawo do emerytury
yyyyy