E-book details

Lepszy kod w Pythonie. Przewodnik dla aspirujących ekspertów

Lepszy kod w Pythonie. Przewodnik dla aspirujących ekspertów

David Mertz

Ebook

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
  • 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
  • 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
  • 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:
  • Title: Lepszy kod w Pythonie. Przewodnik dla aspirujących ekspertów
  • Author: David Mertz
  • ISBN: 9788375415452, 9788375415452
  • Date of issue: 2024-07-30
  • Format: Ebook
  • Item ID: e_40c3
  • Publisher: Promise