Programowanie w Pythonie dla - Helion

ebook
Autor: Al SweigartTytuł oryginału: Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code
Tłumaczenie: Rados
ISBN: 978-83-8322-903-4
stron: 376, Format: ebook
Data wydania: 2021-12-01
Księgarnia: Helion
Cena książki: 71,20 zł (poprzednio: 87,90 zł)
Oszczędzasz: 19% (-16,70 zł)
Tagi: Python - Programowanie
Osoby które kupowały "Programowanie w Pythonie dla ", wybierały także:
- Django 4. Praktyczne tworzenie aplikacji sieciowych. Wydanie IV 125,48 zł, (38,90 zł -69%)
- Zaawansowane uczenie maszynowe z językiem Python 55,94 zł, (17,90 zł -68%)
- Flask. Kurs video. Od pierwszej linijki kodu do praktycznego zastosowania 119,00 zł, (47,60 zł -60%)
- Python na start. Kurs video. Tw 99,00 zł, (39,60 zł -60%)
- Python. Kurs video. Programowanie asynchroniczne 97,32 zł, (39,90 zł -59%)
Spis treści
Programowanie w Pythonie dla średnio zaawansowanych. Najlepsze praktyki tworzenia czystego kodu eBook -- spis treści
- O autorze
- O recenzencie technicznym
- Podziękowania
- Wprowadzenie
- Kto powinien przeczytać tę książkę i dlaczego
- O tej książce
- Twoja podróż programistyczna
- Część I. Pierwsze kroki
- 1. Obsługa błędów i poszukiwanie pomocy
- Komunikaty o błędach w Pythonie
- Analiza śladu
- Wyszukiwanie informacji na temat komunikatów o błędach
- Zapobieganie błędom dzięki wykorzystaniu linterów
- Jak prosić o pomoc w programowaniu?
- Ogranicz konieczność dopowiadania od razu podaj jak najwięcej informacji
- Sformułuj swój problem w postaci rzeczywistego pytania
- Zadawaj pytania na właściwej stronie internetowej
- Podsumuj swoje pytanie w nagłówku
- Wyjaśnij, co ma robić Twój kod
- Dołącz kompletny komunikat o błędzie
- Udostępnij swój pełny kod
- Zastosuj odpowiednie formatowanie, aby poprawić czytelność kodu
- Powiedz osobom pomagającym, czego już próbowałeś
- Opisz swoją konfigurację
- Przykłady pytań
- Podsumowanie
- Komunikaty o błędach w Pythonie
- 2. Konfiguracja środowiska i wiersz polecenia
- System plików
- Ścieżki w Pythonie
- Katalog domowy
- Bieżący katalog roboczy
- Ścieżki względne i bezwzględne
- Programy i procesy
- Wiersz poleceń
- Otwieranie okna terminala
- Uruchamianie programów z wiersza poleceń
- Korzystanie z argumentów wiersza poleceń
- Uruchamianie kodu Pythona z wiersza poleceń z wykorzystaniem argumentu -c
- Uruchamianie programów w Pythonie z wiersza poleceń
- Uruchamianie programu py.exe
- Uruchamianie poleceń systemu operacyjnego z programu Pythona
- Minimalizacja wpisywania dzięki mechanizmowi uzupełniania z wykorzystaniem klawisza Tab
- Wyświetlanie historii poleceń
- Korzystanie z popularnych poleceń
- Dopasowywanie folderów i nazw plików do symboli wieloznacznych
- Zmiana katalogów za pomocą polecenia cd
- Wyświetlanie zawartości folderu za pomocą poleceń dir i ls
- Wyświetlanie zawartości podfolderów za pomocą poleceń dir /s i find
- Kopiowanie plików i folderów za pomocą poleceń copy i cp
- Przenoszenie plików i folderów za pomocą poleceń move i mv
- Zmienianie nazw plików i folderów za pomocą poleceń ren i mv
- Usuwanie plików i folderów za pomocą poleceń del i rm
- Tworzenie folderów za pomocą poleceń md i mkdir
- Usuwanie folderów za pomocą poleceń rd i rmdir
- Wyszukiwanie programów za pomocą poleceń where i which
- Czyszczenie terminala za pomocą poleceń cls i clear
- Zmienne środowiskowe i PATH
- Wyświetlanie wartości zmiennych środowiskowych
- Korzystanie ze zmiennej środowiskowej PATH
- Zmiana zawartości zmiennej środowiskowej PATH dla wiersza polecenia
- Trwałe dodawanie folderów do zmiennej PATH w systemie Windows
- Trwałe dodawanie folderów do zmiennej PATH w systemach macOS i Linux
- Uruchamianie programów Pythona bez wiersza poleceń
- Uruchamianie programów Pythona w systemie Windows
- Uruchamianie programów Pythona w systemie macOS
- Uruchamianie programów Pythona w systemie Ubuntu Linux
- Podsumowanie
- System plików
- Część II. Najlepsze praktyki, narzędzia i techniki
- 3. Formatowanie kodu za pomocą narzędzia Black
- Jak stracić przyjaciół i zrobić sobie wrogów wśród współpracowników?
- Przewodniki stylu i PEP 8
- Odstępy w poziomie
- Używaj jako wcięć znaków spacji
- Odstępy w obrębie wiersza
- Umieść jedną spację pomiędzy operatorami a identyfikatorami
- Nie wstawiaj spacji przed separatorami i wstaw pojedynczą spację po separatorach
- Nie umieszczaj spacji przed kropkami ani po nich
- Nie umieszczaj spacji po nazwie funkcji, metody lub kontenera
- Nie umieszczaj spacji za otwierającymi nawiasami kwadratowymi lub przed nawiasami zamykającymi
- Umieść dwie spacje przed komentarzami kończącymi wiersz
- Odstępy w pionie
- Przykład zastosowania odstępów w pionie
- Najlepsze praktyki dotyczące odstępów w pionie
- Black: bezkompromisowy formater kodu
- Instalacja narzędzia Black
- Uruchamianie narzędzia Black z wiersza polecenia
- Dostosowywanie ustawienia długości wiersza
- Wyłączenie ujmowania ciągów znaków w cudzysłów
- Podgląd zmian, które ma zamiar wprowadzić Black
- Wyłączenie programu Black dla części Twojego kodu
- Podsumowanie
- 4. Wybieranie zrozumiałych nazw
- Style wielkości liter
- Konwencje nazewnictwa PEP 8
- Odpowiednia długość nazw
- Zbyt krótkie nazwy
- Zbyt długie nazwy
- Prefiksy w nazwach
- Sekwencyjne przyrostki liczbowe w nazwach
- Korzystaj z nazw ułatwiających wyszukiwanie
- Unikaj dowcipów, kalamburów i określeń żargonowych
- Nie nadpisuj wbudowanych nazw
- Najgorsze możliwe nazwy zmiennych
- Podsumowanie
- 5. Wyszukiwanie cuchnącego kodu
- Powielony kod
- Magiczne liczby
- Kod wykomentowany i martwy
- Debugowanie za pomocą komunikatów
- Zmienne z przyrostkami numerycznymi
- Klasy, które powinny być funkcjami lub modułami
- Listy składane wewnątrz list składanych
- Puste bloki except i niejasne komunikaty o błędach
- Mity związane z cuchnącym kodem
- Mit: funkcje powinny mieć tylko jedną instrukcję return na końcu
- Mit: funkcje powinny zawierać co najwyżej jedną instrukcję try
- Mit: argumenty-flagi są złe
- Mit: zmienne globalne są złe
- Mit: komentarze są niepotrzebne
- Podsumowanie
- 6. Pisanie pythonicznego kodu
- Zen Pythona
- Naucz się cenić znaczące wcięcia
- Częste przypadki niewłaściwego korzystania ze składni
- Używaj funkcji enumerate() zamiast range()
- Używaj instrukcji with zamiast open() i close()
- Do porównywania z None używaj is zamiast ==
- Formatowanie ciągów znaków
- Jeśli ciąg zawiera wiele lewych ukośników, używaj surowych ciągów znaków
- Formatowanie ciągów za pomocą f-stringów
- Tworzenie płytkich kopii list
- Pythoniczne sposoby korzystania ze słowników
- Używaj ze słownikami wywołań get() i setdefault()
- Użyj dla wartości domyślnych klasy collections.defaultdict
- Używaj słowników zamiast instrukcji switch
- Wyrażenia warunkowe: brzydki operator trójargumentowy Pythona
- Korzystanie z wartości zmiennych
- Operatory przypisania i operatory porównania
- Sprawdzanie, czy zmienna jest jedną z wielu wartości
- Podsumowanie
- 7. Programistyczny żargon
- Definicje
- Python język i Python interpreter
- Odśmiecanie
- Literały
- Słowa kluczowe
- Obiekty, wartości, egzemplarze i tożsamości
- Elementy
- Obiekty mutowalne i niemutowalne
- Indeksy, klucze i skróty
- Kontenery, sekwencje, mapowanie i typy zbiorów
- Metody dunder i metody magiczne
- Moduły i pakiety
- Obiekty wywoływalne i obiekty pierwszej klasy
- Często mylone terminy
- Instrukcje a wyrażenia
- Blok, klauzula i ciało
- Zmienna a atrybut
- Funkcja a metoda
- Obiekt iterowalny a iterator
- Błędy składniowe, błędy wykonania a błędy semantyczne
- Parametry a argumenty
- Koercja typu a rzutowanie typu
- Właściwości a atrybuty
- Kod bajtowy a kod maszynowy
- Skrypt a program, język skryptowy a język programowania
- Biblioteka, framework, SDK, silnik i API
- Podsumowanie
- Dalsza lektura
- Definicje
- 8. Znane pułapki Pythona
- Nie dodawaj ani nie usuwaj elementów z listy, kiedy po niej iterujesz
- Nie kopiuj mutowalnych wartości inaczej niż poprzez wywołania copy.copy() lub copy.deepcopy()
- Nie używaj wartości mutowalnych w roli argumentów domyślnych
- Nie buduj ciągów za pomocą konkatenacji
- Nie oczekuj, że funkcja sort() posortuje listę alfabetycznie
- Nie zakładaj, że liczby zmiennoprzecinkowe są idealnie dokładne
- Nie twórz łańcucha operatorów nierówności !=
- Nie zapominaj o przecinku w krotce złożonej z jednego elementu
- Podsumowanie
- 9. Ezoteryczne osobliwości Pythona
- Dlaczego 256 to jest 256, ale 257 to nie jest 257
- Internowanie ciągów
- Sztuczne operatory inkrementacji i dekrementacji w Pythonie
- Wszystko z nic
- Wartości logiczne są liczbami całkowitymi
- Tworzenie łańcucha operatorów różnego rodzaju
- Antygrawitacja w Pythonie
- Podsumowanie
- 10. Pisanie skutecznych funkcji
- Nazwy funkcji
- Kompromisy dotyczące rozmiaru funkcji
- Parametry i argumenty funkcji
- Argumenty domyślne
- Korzystanie z * i ** w celu przekazywania argumentów do funkcji
- Użycie * do tworzenia funkcji wariadycznych
- Tworzenie funkcji wariadycznych za pomocą składni **
- Tworzenie funkcji-wrapperów za pomocą składni * i **
- Programowanie funkcyjne
- Skutki uboczne
- Funkcje wyższego rzędu
- Funkcje lambda
- Mapowanie i filtrowanie z wykorzystaniem list składanych
- Zwracane wartości zawsze powinny mieć ten sam typ danych
- Zgłaszanie wyjątków a zwracanie kodów błędów
- Podsumowanie
- 11. Komentarze, docstringi i wskazówki typu
- Komentarze
- Styl komentarzy
- Komentarze inline
- Komentarze wyjaśniające
- Komentarze podsumowujące
- Komentarze typu wyciągnięte wnioski
- Komentarze prawne
- Profesjonalny ton
- Znaczniki kodu i komentarze TODO
- Magiczne komentarze i kodowanie plików źródłowych
- Docstringi
- Wskazówki typu
- Korzystanie z narzędzi do statycznej analizy kodu
- Instalowanie i uruchamianie programu Mypy
- Wskazywanie kodu, który ma być ignorowany przez Mypy
- Ustawianie wskazówek dla wielu typów
- Ustawianie wskazówek typu dla list, słowników i nie tylko
- Korzystanie z narzędzi do statycznej analizy kodu
- Backport wskazówek typu z wykorzystaniem komentarzy
- Podsumowanie
- Komentarze
- 12. Organizowanie projektów kodu z wykorzystaniem systemu Git
- Commity i repozytoria systemu Git
- Korzystanie z narzędzia Cookiecutter do tworzenia nowych projektów w Pythonie
- Instalacja Gita
- Konfigurowanie nazwy użytkownika Gita i adresu e-mail
- Instalacja narzędzi GUI dla Gita
- Przepływ pracy w systemie Git
- W jaki sposób Git śledzi stan pliku?
- Po co jest stan staged?
- Tworzenie repozytorium Gita na komputerze lokalnym
- Dodawanie plików do śledzenia przez Gita
- Ignorowanie plików w repozytorium
- Zatwierdzanie zmian
- Używanie polecenia git diff do wyświetlania zmian przed zatwierdzeniem
- Wykorzystanie narzędzia git difftool do wyświetlania zmian za pomocą aplikacji GUI
- Jak często należy zatwierdzać zmiany?
- Usuwanie plików z repozytorium
- Zmiana nazwy i przenoszenie plików w repozytorium
- Przeglądanie loga commitów
- Przywracanie wcześniejszych zmian
- Cofanie niezatwierdzonych lokalnych zmian
- Anulowanie stanu staged pliku
- Cofanie najnowszych commitów
- Cofanie zmian do określonego commita dla pojedynczego pliku
- Przepisywanie historii commitów
- GitHub i polecenie git push
- Przesyłanie istniejącego repozytorium do usługi GitHub
- Klonowanie repozytorium z istniejącego repozytorium w serwisie GitHub
- Podsumowanie
- 13. Mierzenie wydajności algorytmów i analiza Big O
- Moduł timeit
- Profiler cProfile
- Analiza algorytmów Big O
- Rzędy w notacji Big O
- Metafora regału dla rzędów notacji Big O
- O(1), stały czas wykonywania
- O(log n), logarytmiczny czas wykonywania
- O(n), liniowy czas wykonywania
- O(n log n), N-Log-N
- O(n2), czas wielomianowy
- O(2n), czas wykładniczy
- O(n!), wzrost czasu w tempie n silnia
- Notacja Big O mierzy najgorszy scenariusz
- Metafora regału dla rzędów notacji Big O
- Określanie rzędu Big O kodu
- Dlaczego niższe rzędy i współczynniki nie mają znaczenia?
- Przykłady analizy Big O
- Rzędy Big O popularnych wywołań
- Analiza Big O w mgnieniu oka
- Big O nie ma znaczenia dla małych n, czyli dla większości przypadków
- Podsumowanie
- 14. Praktyczne projekty
- Wieża Hanoi
- Wyjście
- Kod źródłowy
- Pisanie kodu
- Cztery w rzędzie
- Wyjście
- Kod źródłowy
- Pisanie kodu
- Podsumowanie
- Wieża Hanoi
- Część III. Python obiektowy
- 15. Klasy i programowanie obiektowe
- Analogia do rzeczywistego świata: wypełnianie formularza
- Tworzenie obiektów na podstawie klas
- Tworzenie prostej klasy: WizCoin
- Metody __init__() i self
- Atrybuty
- Atrybuty prywatne i metody prywatne
- Funkcja type() i atrybut __qualname__
- Przykłady kodu obiektowego i nieobiektowego: kółko i krzyżyk
- Projektowanie klas dla rzeczywistych aplikacji jest trudne
- Podsumowanie
- 16. Programowanie obiektowe i dziedziczenie
- Jak działa dziedziczenie
- Przesłanianie metod
- Funkcja super()
- Staraj się stosować kompozycję zamiast dziedziczenia
- Minusy dziedziczenia
- Funkcje isinstance() i issubclass()
- Metody klasy
- Atrybuty klasy
- Metody statyczne
- Kiedy używać metod i atrybutów klasy oraz metod statycznych w programach obiektowych?
- Terminologia obiektowa
- Hermetyzacja
- Polimorfizm
- Kiedy nie używać dziedziczenia?
- Dziedziczenie wielokrotne
- Kolejność rozpoznawania metod
- Podsumowanie
- Jak działa dziedziczenie
- 17. Pythoniczny paradygmat OOP: właściwości i metody dunder
- Właściwości
- Przekształcanie atrybutu we właściwość
- Używanie setterów do sprawdzania poprawności danych
- Właściwości tylko do odczytu
- Kiedy używać właściwości?
- Metody dunder w Pythonie
- Metody dunder reprezentacji tekstowych
- Liczbowe metody dunder
- Odbite numeryczne metody dunder
- Metody dunder rozszerzonego przypisania w miejscu
- Metody dunder porównań
- Podsumowanie
- Właściwości





