Деталі електронної книги
Lepszy kod w Pythonie. Przewodnik dla aspirujących ekspertów
David Mertz
Wyjdź poza kod Pythona, który "w dużej mierze działa", do kodu, który jest ekspresyjny, solidny i wydajny
Python jest zapewne najczęściej używanym językiem programowania na świecie, od nauczania w szkołach podstawowych, przez codzienne tworzenie stron internetowych, aż po najbardziej zaawansowane badania naukowe. Choć każde zadanie w Pythonie można wykonać na wiele różnych sposobów, niektóre z nich są błędne, nieeleganckie lub nieefektywne. Lepszy kod w Pythonie to przewodnik po programowaniu "pythonicznym", zbiór najlepszych praktyk, technik i niuansów, które łatwo przeoczyć, zwłaszcza gdy mamy nawyki zapożyczone z innych języków programowania.
Autor David Mertz prezentuje konkretne i zwięzłe przykłady rozmaitych nieporozumień, pułapek i złych nawyków. Wyjaśnia, dlaczego niektóre praktyki są lepsze od innych, bazując na swoim ponad 25-letnim doświadczeniu jako uznany członek społeczności Pythona. Rozdziały ułożone są w kolejności rosnącej według stopnia zaawansowania, a każdy z nich szczegółowo omawia powiązane grupy pojęć.
Nie ma znaczenia, czy dopiero zaczynasz pracę z Pythonem, czy też jesteś doświadczonym deweloperem przesuwającym granice swojego kodu w Pythonie. Ta książka jest dla każdego, kto chce być bardziej pythoniczny pisząc lepszy kod w języku Python.
Dr David Mertz od ponad 25 lat jest członkiem społeczności Pythona i uczył Pythona naukowców, deweloperów z doświadczeniem w innych językach, a także początkujących programistów. David przez sześć lat był dyrektorem organizacji Python Software Foundation (PSF) i nadal przewodniczy lub należy do różnych grup roboczych PSF. Jest autorem kilku książek technicznych i wygłaszał wykłady na licznych międzynarodowych konferencjach programistycznych.
"Moje wysokie oczekiwania wobec tej wciągającej książki o Pythonie zostały przekroczone: oferuje ona mnóstwo cennych informacji dla średnich i zaawansowanych programistów pozwalając im udoskonalić swoje umiejętności w Pythonie, obszernie dzieli się cennym doświadczeniem związanym z wykorzystywaniem i nauczaniem języka, a przy tym jest zwięzła, łatwa w czytaniu i pisana stylem konwersacyjnym.
Alex Martelli
Używaj właściwego rodzaju pętli w Pythonie
Poznaj tajniki obiektów zmiennych i niezmiennych
Uzyskaj porady od ekspertów w celu uniknięcia kłopotów w Pythonie
Zbadaj zaawansowane tematy dotyczące Pythona
Poruszaj się po "atrakcyjnych uciążliwościach", które istnieją w Pythonie
Poznaj najbardziej przydatne struktury danych w Pythonie i dowiedz się, jak uniknąć ich niewłaściwego wykorzystywania
Unikaj błędów związanych z bezpieczeństwem
Poznaj podstawy obliczeń numerycznych, w tym liczby zmiennoprzecinkowe i numeryczne typy danych
- Spis treści
- Przedmowa
- Wstęp
- Podziękowania
- O autorze
- Wprowadzenie
- Przechodzenie w pętli po niewłaściwych rzeczach
- 1.1 (Rzadko) generuj listę na potrzeby iteracji
- 1.2 Używaj enumerate() zamiast przechodzić w pętli po indeksie
- 1.3 Nie iteruj po dict.keys(), jeśli chcesz dict.items()
- 1.4 Zmienianie obiektu w czasie iteracji
- 1.5 Pętle for są bardziej idiomatyczne niż pętle while
- 1.6 Operator mors dla bloków pętli i pół
- 1.7 zip() upraszcza korzystanie z wielu obiektów iterowalnych
- 1.8 zip(strict=True) i itertools.zip_longest()
- 1.9 Podsumowanie
- Mylenie równości z tożsamością
- 2.1 Późne wiązanie domknięć
- 2.2 Nadmierne sprawdzanie wartości logicznych
- 2.3 Porównywanie x == None
- 2.4 Nieporozumienia związane ze zmiennymi argumentami domyślnymi
- 2.4.1 Podejście pierwsze: użyj klasy
- 2.4.2 Podejście drugie: użyj wartownika None
- 2.4.3 Podejście trzecie: skorzystaj z generatorów stanowych
- 2.5 Kopie kontra referencje do zmiennych obiektów
- 2.6 Mylenie operatora is z == (w obecności internowania)
- 2.7 Podsumowanie
- Mieszanka problemów w Pythonie
- 3.1 Nazywanie rzeczy
- 3.1.1 Nazywanie pliku tak samo jak moduł biblioteki standardowej
- 3.1.2 Unikaj używania import *
- 3.1.3 Puste lub zbyt ogólne instrukcje except
- 3.2 Kwadratowa złożoność naiwnej konkatenacji tekstów
- 3.3 Użyj menedżera kontekstu do otwarcia pliku
- 3.3.1 Pierwsze niebezpieczeństwo
- 3.3.2 Drugie niebezpieczeństwo
- 3.3.3 Poprawianie kruchości
- 3.4 Opcjonalny argument key dla .sort() i sorted()
- 3.5 Użyj dict.get() dla niepewnych kluczy
- 3.6 Podsumowanie
- 3.1 Nazywanie rzeczy
- Zaawansowane użytkowanie Pythona
- 4.1 Porównywanie type(x) == type(y)
- 4.2 Nazywanie rzeczy (nowe spojrzenie)
- 4.2.1 Nadpisywanie nazw wbudowanych
- 4.2.2 Uzyskiwanie bezpośredniego dostępu do atrybutu chronionego
- 4.3 Pamiętaj o rzadziej używanych funkcjach
- 4.3.1 Debugowanie sformatowanego tekstu
- 4.3.2 Elegancka magia dekoratorów
- 4.3.3 Używanie itertools (w odpowiednim stopniu)
- 4.3.4 Biblioteka zewnętrzna more-itertools
- 4.4 Adnotacje typów nie są typami w czasie wykonywania
- 4.4.1 Adnotacje typów nie są ograniczeniami w czasie wykonywania
- 4.4.2 Mylenie typing.NewType() z typem w czasie wykonywania
- 4.5 Podsumowanie
- To, że możesz, nie znaczy, że powinieneś
- 5.1 Metaklasy
- 5.2 Małpie łatanie
- 5.3 Gettery i settery
- 5.4 Łatwiej prosić o przebaczenie niż o pozwolenie
- 5.5 Strukturalne dopasowywanie wzorców
- 5.6 Wyrażenia regularne i katastrofalne cofanie
- 5.7 Podsumowanie
- Wybieranie odpowiedniej struktury danych
- 6.1 collections.defaultdict
- 6.2 collections.Counter
- 6.2.1 Rozwiązanie
- 6.2.2 Błąd
- 6.3 collections.deque
- 6.3.1 Rozwiązanie
- 6.3.2 Błąd
- 6.4 collections.ChainMap
- 6.4.1 Rozwiązanie
- 6.4.2 Błąd
- 6.5 Klasy danych i krotki nazwane
- 6.5.1 Korzystanie z krotek nazwanych
- 6.5.2 Statyczne kontra dynamiczne
- 6.5.3 Klasy danych
- 6.6 Wydajne konkretne sekwencje
- 6.7 Podsumowanie
- Niewłaściwe wykorzystywanie struktur danych
- 7.1 Kwadratowa złożoność wielokrotnego wyszukiwania na liście
- 7.2 Usuwanie lub dodawanie elementów do środka listy
- 7.2.1 Bardziej wydajne struktury danych
- 7.3 Teksty są obiektami iterowalnymi tekstów
- 7.4 (Często) używaj enum zamiast STAŁEJ
- 7.5 Poznaj mniej popularne metody słownika
- 7.5.1 Słowniki definiujące obiekty
- 7.5.2 Powrót do naszego planowanego błędu
- 7.6 JSON nie obsługuje w Pythonie konwersji w obie strony
- 7.6.1 Informacje podstawowe na temat formatu JSON
- 7.6.2 Dane, które nie są konwertowane w obie strony
- 7.7 Tworzenie własnych struktur danych
- 7.7.1 Kiedy tworzenie własnej struktury danych jest złym pomysłem
- 7.7.2 Kiedy tworzenie własnej struktury danych jest dobrym pomysłem
- 7.7.3 Najważniejsze wnioski
- 7.8 Podsumowanie
- Bezpieczeństwo
- 8.1 Rodzaje losowości
- 8.1.1 Używaj modułu secrets na potrzeby losowości kryptograficznej
- 8.1.2 Odtwarzalne rozkłady losowe
- 8.2 Umieszczanie haseł lub innych sekretów w bezpiecznym kodzie źródłowym
- 8.3 Tworzenie własnych mechanizmów bezpieczeństwa
- 8.4 Używaj SSL/TLS na potrzeby mikrousług
- 8.5 Korzystanie z zewnętrznej biblioteki requests
- 8.6 Ataki SQL Injection, gdy nie korzysta się z DB-API
- 8.7 Nie używaj assert do sprawdzania założeń bezpieczeństwa
- 8.8 Podsumowanie
- 8.1 Rodzaje losowości
- Obliczenia numeryczne w Pythonie
- 9.1 Liczby zmiennoprzecinkowe IEEE-754
- 9.1.1 Porównywanie wartości NaN (i innych liczb zmiennoprzecinkowych)
- 9.1.2 Wartości NaN i statistics.median()
- 9.1.3 Naiwne użycie liczb zmiennoprzecinkowych: łączność i rozdzielność
- 9.1.4 Naiwne użycie liczb zmiennoprzecinkowych: szczegółowość
- 9.2 Numeryczne typy danych
- 9.2.1 Unikaj liczb zmiennoprzecinkowych w obliczeniach finansowych
- 9.2.2 Nieoczywiste zachowania numerycznych typów danych
- 9.3 Podsumowanie
- 9.1 Liczby zmiennoprzecinkowe IEEE-754
- Tematy na inne książki
- A.1 Test-Driven Development (TDD)
- A.2 Współbieżność
- A.3 Tworzenie pakietów
- A.4 Sprawdzanie typów
- A.5 Biblioteki numeryczne i biblioteki ramek danych
- Indeks
- Polecamy także:
- Назва:Lepszy kod w Pythonie. Przewodnik dla aspirujących ekspertów
- Автор:David Mertz
- ISBN:9788375415452, 9788375415452
- Дата видання:2024-07-30
- Формат:Eлектронна книга
- Ідентифікатор видання: e_40c3
- Видавець: Promise