Python (język programowania)
Sortowanie
Źródło opisu
Książki, czasopisma i zbiory specjalne
(77)
Forma i typ
Książki
(75)
Publikacje fachowe
(58)
Publikacje dydaktyczne
(21)
Poradniki i przewodniki
(2)
Publikacje naukowe
(2)
Publikacje popularnonaukowe
(1)
Dostępność
tylko na miejscu
(71)
dostępne
(12)
wypożyczone
(5)
nieokreślona
(1)
Placówka
Wypożyczalnia
(17)
Biblioteka WB
(2)
Biblioteka Międzywydziałowa
(2)
Biblioteka WEiZ
(1)
Magazyn
(1)
Biblioteka WEAiI
(66)
Autor
Meryk Radosław
(7)
Górczyński Robert
(6)
Matuk Konrad
(6)
Watrak Andrzej
(6)
Sawka Krzysztof
(4)
Grus Joel
(3)
Lutz Mark
(3)
Mizerska Anna
(3)
Pętlicki Marek
(3)
Walczak Tomasz
(3)
Ziadé Tarek
(3)
Ascher David
(2)
Bombik Wojciech
(2)
Górczyńska Agnieszka
(2)
Kamiński Filip (informatyk)
(2)
Kamiński Filip (informatyka)
(2)
Lachowski Lech
(2)
McKinney Wes
(2)
Melé Antonio
(2)
Moch Wojciech
(2)
Monk Simon
(2)
Mueller John (1958- )
(2)
Raschka Sebastian
(2)
Sagalara Leszek
(2)
Shaw Zed
(2)
Sweigart Al
(2)
Trojan Anna
(2)
Walczak Tomasz (tłumacz)
(2)
Albon Chris
(1)
Aly Bassem
(1)
Badhwar Saurabh
(1)
Beazley David M
(1)
Bell Ana
(1)
Bem Daniel J
(1)
Bhargava Aditya Y
(1)
Bird Andrew
(1)
Bissex Paul
(1)
Bogusławska Katarzyna
(1)
Bray Shannon (1972- )
(1)
Buczyński Sebastian (informatyka)
(1)
Buelta Jaime
(1)
Ceder Naomi R
(1)
Chandra K S Bharath
(1)
Chollet François
(1)
Chun Wesley
(1)
Cook Mike
(1)
Dawson Michael
(1)
Deitel Harvey M. (1945- )
(1)
Deitel Paul J
(1)
Fenner Mark E
(1)
Forcier Jeff
(1)
Freeman Eric (1965- )
(1)
Gogołek Włodzimierz
(1)
Gola Przemysław (tłumacz)
(1)
Gorelick Micha
(1)
Graham Daniel G
(1)
Grażyński Andrzej
(1)
Grinberg Miguel (informatyka)
(1)
Guest Chris
(1)
Gutowski Maksymilian
(1)
Hearty John
(1)
Hillard Dane
(1)
Hilpisch Yves
(1)
Hubisz Jakub
(1)
Jackson Cody
(1)
Janusz Jacek
(1)
Jaworski Michał (programista)
(1)
Jaworski Michał (programowanie)
(1)
Johansson Robert
(1)
Joseph Lentin
(1)
Jurkiewicz Adam
(1)
Kamiński Filip
(1)
Kapil Sunil
(1)
Kirk Matthew
(1)
Kneusel Ronald
(1)
Konatowicz Krzysztof
(1)
Kondracki Sebastian
(1)
Kowalczyk Grzegorz
(1)
Kowalczyk Grzegorz (informatyk)
(1)
Liu Yuxi
(1)
Lott Steven F. (1956- )
(1)
Machowski Janusz
(1)
Martelli Alex
(1)
Martelli Ravenscroft Anna
(1)
Massaron Luca
(1)
Matthes Eric (1972- )
(1)
Melé Antonio (informatyka)
(1)
Miles Rob S. (1957- )
(1)
Mirjalili Vahid
(1)
Mitchell Ryan E
(1)
Molina Alessandro
(1)
Moroney Laurence
(1)
Mount George
(1)
Niedźwiedź Jakub
(1)
Ogólnopolska Konferencja "Internet - Wrocław 2003" (5 ; 2003 ; Wrocław)
(1)
Osowski Stanisław (1948- )
(1)
Ozsvald Ian
(1)
Pawłowski Grzegorz
(1)
Pilch Piotr
(1)
Piwko Łukasz
(1)
Rok wydania
2020 - 2024
(41)
2010 - 2019
(31)
2000 - 2009
(5)
Okres powstania dzieła
2001-
(62)
Kraj wydania
Polska
(77)
Język
polski
(77)
Odbiorca
Programiści
(22)
Informatycy
(8)
Analitycy danych
(4)
Szkoły wyższe
(2)
Szkoły średnie
(2)
Maklerzy giełdowi
(1)
Nauczyciele
(1)
Temat
Budownictwo
(2413)
Zarządzanie
(2038)
Matematyka
(1930)
Elektrotechnika
(1896)
Przedsiębiorstwa
(1790)
Python (język programowania)
(-)
Fizyka
(1535)
Informatyka
(1502)
Maszyny
(1228)
Fizjoterapia
(1177)
Wytrzymałość materiałów
(1158)
Ochrona środowiska
(1023)
Sport
(1013)
Turystyka
(953)
Elektronika
(946)
Ekonomia
(932)
Mechanika
(932)
Automatyka
(916)
Język angielski
(874)
Samochody
(867)
Rachunkowość
(821)
Chemia
(809)
Rehabilitacja
(800)
Polska
(792)
Gospodarka
(778)
Komunikacja marketingowa
(761)
Technika
(743)
Konstrukcje budowlane
(727)
Wychowanie fizyczne
(725)
Przemysł
(724)
Prawo pracy
(712)
Piłka nożna
(710)
Unia Europejska
(699)
Transport
(673)
Elektroenergetyka
(668)
Marketing
(638)
Architektura
(637)
Innowacje
(621)
Naprężenia i odkształcenia
(615)
OZE
(606)
Programowanie (informatyka)
(590)
Programy komputerowe
(586)
Trening
(586)
Energetyka
(585)
Technologia chemiczna
(567)
Rolnictwo
(556)
Biomasa
(543)
Analiza numeryczna
(532)
Prawo
(524)
Odnawialne źródła energii
(523)
Sterowanie
(520)
Materiałoznawstwo
(519)
Produkcja
(518)
Komputery
(517)
Symulacja
(516)
Inwestycje
(508)
Praca
(504)
Zarządzanie jakością
(497)
Zarządzanie zasobami ludzkimi (HRM)
(496)
Analiza matematyczna
(495)
Dzieci
(494)
Energia elektryczna
(491)
Urbanistyka
(488)
Materiały budowlane
(484)
Logistyka gospodarcza
(480)
Rynek pracy
(474)
Finanse
(468)
Maszyny elektryczne
(468)
Przedsiębiorstwo
(468)
Szkolnictwo wyższe
(468)
Psychologia
(467)
Modele matematyczne
(465)
Internet
(464)
Metale
(462)
Nauka
(456)
Marketing internetowy
(453)
Systemy informatyczne
(448)
Statystyka matematyczna
(447)
Języki programowania
(433)
Skrawanie
(433)
Reklama
(431)
Rehabilitacja medyczna
(430)
Mechanika budowli
(425)
Działalność gospodarcza
(422)
Organizacja
(417)
Telekomunikacja
(413)
Metrologia
(412)
Pedagogika
(410)
Drgania
(409)
Trener
(406)
Ubezpieczenia społeczne
(394)
Controlling
(392)
Optymalizacja
(392)
Historia
(388)
Filozofia
(385)
Podatki
(385)
Statystyka
(384)
Socjologia
(383)
Banki
(379)
BHP
(377)
Rachunkowość zarządcza
(374)
Temat: czas
2001-
(2)
Gatunek
Podręcznik
(66)
Poradnik
(3)
Podręczniki
(1)
Poradniki
(1)
Dziedzina i ujęcie
Informatyka i technologie informacyjne
(64)
Matematyka
(6)
Gospodarka, ekonomia, finanse
(2)
Edukacja i pedagogika
(1)
Inżynieria i technika
(1)
77 wyników Filtruj
Książka
W koszyku
Wydanie 2. odnosi się do oryginału.
Na stronie tytułowej i okładce także nazwa wydawcy oryginału: O'Reilly.
Znaczenie danych Czym jest analiza danych? Hipotetyczna motywacja Określanie najważniejszych węzłów Analitycy, których możesz znać Wynagrodzenie i doświadczenie Płatne konta Tematy interesujące użytkowników Błyskawiczny kurs Pythona Zasady tworzenia kodu Pythona Skąd wziąć interpreter Pythona? Środowiska wirtualne Formatowanie za pomocą białych znaków Moduły Polskie znaki diakrytyczne Funkcje Łańcuchy Wyjątki Listy Krotki Słowniki defaultdict Counter Zbiory Przepływ sterowania Wartości logiczne Sortowanie Składanie list Testy automatyczne i instrukcja assert Programowanie obiektowe Obiekty iterowalne i generatory Losowość Wyrażenia regularne Narzędzia funkcyjne Funkcja zip i rozpakowywanie argumentów Argumenty nazwane i nienazwane Adnotacje typów Jak pisać adnotacje typów Witaj w firmie DataSciencester! 3. Wizualizacja danych Pakiet matplotlib Wykres słupkowy Wykresy liniowe Wykresy punktowe 4. Algebra liniowa Wektory Macierze 5. Statystyka Opis pojedynczego zbioru danych Tendencje centralne Dyspersja Korelacja Paradoks Simpsona Korelacja i przyczynowość 6. Prawdopodobieństwo Zależność i niezależność Prawdopodobieństwo warunkowe Twierdzenie Bayesa Zmienne losowe Ciągły rozkład prawdopodobieństwa Rozkład normalny Centralne twierdzenie graniczne Przykład: rzut monetą Wartości p Przedziały ufności Hakowanie wartości p Przykład: przeprowadzanie testu A-B Wnioskowanie bayesowskie Dalsza eksploracja 8. Metoda gradientu prostego Podstawy metody gradientu prostego Szacowanie gradientu Korzystanie z gradientu Dobór właściwego rozmiaru kroku Używanie metody gradientu do dopasowywania modeli Metody gradientu prostego: stochastyczna i minibatch 9. Uzyskiwanie danych Strumienie stdin i stdout Wczytywanie plików Podstawowe zagadnienia dotyczące plików tekstowych Pliki zawierające dane rozdzielone separatorem Pobieranie danych ze stron internetowych HTML i parsowanie Przykład: wypowiedzi kongresmenów Korzystanie z interfejsów programistycznych Format JSON (i XML) Korzystanie z interfejsu programistycznego bez uwierzytelniania Poszukiwanie interfejsów programistycznych Przykład: korzystanie z interfejsów programistycznych serwisu Twitter Uzyskiwanie danych uwierzytelniających Eksploracja danych jednowymiarowych Dwa wymiary 1 Wiele wymiarów Wykorzystanie klasy NamedTuple Dekorator dataclass Oczyszczanie i wstępne przetwarzanie danych Przetwarzanie danych Przeskalowanie Dygresja: tqdm Redukcja liczby wymiarów 11. Uczenie maszynowe Modelowanie Czym jest uczenie maszynowe? Nadmierne i zbyt małe dopasowanie Poprawność Kompromis pomiędzy wartością progową a wariancją Ekstrakcja i selekcja cech 12. Algorytm k najbliższych sąsiadów Model Przykład: dane dotyczące irysów Przekleństwo wymiarowości 13. Naiwny klasyfikator bayesowski Bardzo prosty filtr antyspamowy Bardziej zaawansowany filtr antyspamowy Implementacja Testowanie modelu Używanie modelu 14. Prosta regresja liniowa Model Korzystanie z algorytmu spadku gradientowego Szacowanie maksymalnego prawdopodobieństwa 15. Regresja wieloraka Model Dalsze założenia dotyczące modelu najmniejszych kwadratów Dopasowywanie modelu Interpretacja modelu Poprawność dopasowania Dygresja: ładowanie wstępne Błędy standardowe współczynników regresji Regularyzacja 16. Regresja logistyczna Funkcja logistyczna Stosowanie modelu Poprawność dopasowania Maszyny wektorów nośnych Dalsza eksploracja 17. Drzewa decyzyjne Czym jest drzewo decyzyjne? Entropia Entropia podziału Tworzenie drzewa decyzyjnego Łączenie wszystkiego w całość Lasy losowe 18. Sztuczne sieci neuronowe Perceptrony Jednokierunkowe sieci neuronowe Propagacja wsteczna Przykład: Fizz Buzz Dalsza eksploracja 19. Uczenie głębokie Tensor Abstrakcja Layer Warstwa Linear Sieci neuronowe jako sekwencje warstw Abstrakcja Loss i optymalizacja Przykład: kolejne podejście do bramki XOR Inne funkcje aktywacji Przykład: kolejne podejście do gry Fizz Buzz Funkcja softmax i entropia krzyżowa Dropout Przykład: MNIST Zapisywanie i wczytywanie modeli 20. Grupowanie Idea Model Przykład: spotkania Wybór wartości parametru k Przykład: grupowanie kolorów Grupowanie hierarchiczne z podejściem aglomeracyjnym 21. Przetwarzanie języka naturalnego Chmury wyrazowe Modele n-gram Gramatyka Na marginesie: próbkowanie Gibbsa Modelowanie tematu Wektory słów Rekurencyjne sieci neuronowe Przykład: używanie rekurencyjnej sieci neuronowej na poziomie pojedynczych znaków Dalsza eksploracja 22. Analiza sieci społecznościowych Pośrednictwo Centralność wektorów własnych Mnożenie macierzy Centralność Grafy skierowane i metoda PageRank 23. Systemy rekomendujące Ręczne rozwiązywanie problemu Rekomendowanie tego, co jest popularne Filtrowanie kolaboratywne oparte na użytkownikach Filtrowanie kolaboratywne oparte na zainteresowaniach Faktoryzacja macierzy 24. Bazy danych i SQL Polecenia CREATE TABLE i INSERT Polecenie UPDATE Polecenie DELETE Polecenie SELECT Polecenie GROUP BY Polecenie ORDER BY Polecenie JOIN Zapytania składowe Optymalizacja zapytań Bazy danych NoSQL Dalsza eksploracja 25. Algorytm MapReduce Przykład: liczenie słów Dlaczego warto korzystać z algorytmu MapReduce? Algorytm MapReduce w ujęciu bardziej ogólnym Przykład: analiza treści statusów Przykład: mnożenie macierzy Dodatkowe informacje: zespalanie 26. Etyka przetwarzania danych Czym jest etyka danych? Ale tak naprawdę to czym jest etyka danych? Czy powinienem przejmować się etyką danych? Tworzenie złych produktów wykorzystujących dane Kompromis między dokładnością a uczciwością Współpraca Interpretowalność Rekomendacje Tendencyjne dane Ochrona danych IPython Matematyka Korzystanie z gotowych rozwiązań NumPy pandas scikit-learn Wizualizacja R Uczenie głębokie Szukanie danych Zabierz się za analizę Hacker News Wozy straży pożarnej Koszulki Tweety na kuli ziemskiej
Sygnatura czytelni BWEAiI: XII Ł 217
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 153003 (1 egz.)
Książka
W koszyku
Zaawansowane uczenie maszynowe z językiem Python / John Hearty ; [tłumaczenie Konrad Matuk]. - Gliwice : Helion, copyright 2017. - 246 stron: ilustracje, wykresy ; 24 cm.
(Technologia i Rozwiązania)
Indeks.
Nienadzorowane uczenie maszynowe Analiza głównych składowych (PCA) Podstawy analizy głównych składowych Stosowanie algorytmu analizy głównych składowych Wprowadzenie grupowania metodą k-średnich Grupowanie - wprowadzenie Rozpoczynamy grupowanie Dostrajanie konfiguracji klastrów Sieci Kohonena Sieci Kohonena - wprowadzenie Korzystanie z sieci Kohonena Sieci DBN Sieci neuronowe - wprowadzenie Budowa sieci neuronowej Topologie sieci Ograniczona maszyna Boltzmanna Ograniczone maszyny Boltzmanna - wstęp Zastosowania ograniczonych maszyn Boltzmanna Dalsze zastosowania ograniczonej maszyny Boltzmanna Sieci głębokie Trenowanie sieci DBN Stosowanie sieci DBN Walidacja sieci DBN Stosy autoenkoderów odszumiających Autoenkodery Autoenkodery - wprowadzenie Odszumianie autoenkoderów Korzystanie z autoenkodera odszumiającego Stosy autoenkoderów odszumiających Korzystanie ze stosu autoenkoderów odszumiających Ocena wydajności stosu autoenkoderów odszumiających Konwolucyjne sieci neuronowe Konwolucyjne sieci neuronowe - wprowadzenie Topologia sieci konwolucyjnej Korzystanie z konwolucyjnych sieci neuronowych Częściowo nadzorowane uczenie maszynowe Czym jest uczenie częściowo nadzorowane? Działanie algorytmów uczenia częściowo nadzorowanego Samodzielne uczenie się) Kontrastywna pesymistyczna estymacja prawdopodobieństwa Rozpoznawanie języka naturalnego i selekcja cech Selekcja cech danych tekstowych Czyszczenie danych tekstowych Tworzenie cech na podstawie danych tekstowych Testowanie przygotowanych danych Selekcja cech - część II Tworzenie zestawu cech Selekcja cech pod kątem uczenia maszynowego Korzystanie z technik selekcji cech Inżynieria cech w praktyce Pobieranie danych za pomocą interfejsów REST Metody zespołowe Wprowadzenie do metod zespołowych Metody uśredniające Stosowanie metod wzmacniania Stosowanie metod kontaminacji Wykorzystanie modeli w zastosowaniach dynamicznych Czym jest elastyczność modeli? Strategie zarządzania elastycznością modelu Dodatkowe narzędzia uczenia maszynowego w języku Python Alternatywne narzędzia programowe Biblioteka Lasagne - wprowadzenie Biblioteka TensorFlow - wprowadzenie Kiedy warto korzystać z tych bibliotek? Wymagania przykładowych skryptów
Sygnatura czytelni BWEAiI: XII Ł 87
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 145179 N (1 egz.)
Książka
W koszyku
Python : dobre praktyki profesjonalistów / Dane Hillard ; przekład : Michał Sternik. - Gliwice : Helion, copyright 2020. - 240 stron : ilustracje ; 24 cm.
Indeks.
CZĘŚĆ I. DLACZEGO TO WSZYSTKO MA ZNACZENIE 17 Rozdział 1. Szersze spojrzenie 19 1.1. Python jest językiem dla przedsiębiorstw 20 1.1.1. Czasy się zmieniają 20 1.1.2. Co lubię w Pythonie 21 1.2. Python jest językiem przyjaznym do nauczania 21 1.3. Projektowanie jest procesem 22 1.3.1. Doświadczenie użytkownika 23 1.3.2. Już to widziałeś 24 1.4. Projektowanie umożliwia tworzenie lepszego oprogramowania 24 1.4.1. Rozważania przy projektowaniu oprogramowania 25 1.4.2. Oprogramowanie organiczne 26 1.5. Kiedy inwestować w projektowanie 27 1.6. Nowe początki 28 1.7. Projekt jest demokratyczny 29 1.7.1. Obecność umysłu 29 1.8. Jak korzystać z tej książki 31 CZĘŚĆ II. PODSTAWY PROJEKTOWANIA 33 Rozdział 2. Rozdzielanie zagadnień 35 2.1. Przestrzenie nazw 36 2.1.1. Przestrzenie nazw oraz polecenie import 36 2.1.2. Wiele twarzy importowania 38 2.1.3. Przestrzenie nazw zapobiegają kolizjom nazw 39 2.2. Hierarchia rozdzielania w Pythonie 41 2.2.1. Funkcje 41 2.2.2. Klasy 47 2.2.3. Moduły 52 2.2.4. Pakiety 52 Rozdział 3. Abstrakcja i hermetyzacja 57 3.1. Co to jest abstrakcja? 57 3.1.1. "Czarna skrzynka" 57 3.1.2. Abstrakcja jest jak cebula 59 3.1.3. Abstrakcja to uproszczenie 61 3.1.4. Dekompozycja umożliwia zastosowanie abstrakcji 62 3.2. Hermetyzacja 63 3.2.1. Konstrukty hermetyzacji w Pythonie 63 3.2.2. Prywatność w Pythonie 64 3.3. Wypróbuj 64 3.3.1. Refaktoryzacja 66 3.4. Style programowania to też abstrakcja 67 3.4.1. Programowanie proceduralne 67 3.4.2. Programowanie funkcyjne 67 3.4.3. Programowanie deklaratywne 69 3.5. Typowanie, dziedziczenie i polimorfizm 70 3.6. Rozpoznanie nieprawidłowej abstrakcji 72 3.6.1. Kwadratowe kołki i okrągłe otwory 72 3.6.2. Buty szyte na miarę 73 Rozdział 4. Projektowanie pod kątem wysokiej wydajności 75 4.1. Pędząc przez czas i przestrzeń 76 4.1.1. Złożoność jest trochę... złożona 76 4.1.2. Złożoność czasowa 77 4.1.3. Złożoność przestrzeni 80 4.2. Wydajność i typy danych 81 4.2.1. Typy danych dla stałego czasu 81 4.2.2. Typy danych w czasie liniowym 82 4.2.3. Złożoność przestrzeni w operacjach na typach danych 82 4.3. Zrób to, zrób to dobrze, spraw, żeby było szybkie 85 4.3.1. Zrób to 86 4.3.2. Zrób to dobrze 86 4.3.3. Spraw, żeby było szybkie 89 4.4. Narzędzia 89 4.4.1. timeit 90 4.4.2. Profilowanie CPU 91 4.5. Wypróbuj 92 Rozdział 5. Testowanie oprogramowania 95 5.1. Czym jest testowanie oprogramowania 96 5.1.1. Czy robi to, co napisano w instrukcji 96 5.1.2. Anatomia testu funkcjonalnego 96 5.2. Podejścia do testowania funkcjonalnego 98 5.2.1. Testy manualne 98 5.2.2. Testy automatyczne 98 5.2.3. Testy akceptacyjne 99 5.2.4. Testy jednostkowe 100 5.2.5. Testy integracyjne 101 5.2.6. Piramida testów 102 5.2.7. Testy regresji 103 5.3. Stwierdzenie faktów 104 5.4. Testy jednostkowe z unittest 105 5.4.1. Organizacja testów z unittest 105 5.4.2. Uruchamianie testów z unittest 105 5.4.3. Pisanie pierwszego testu w unittest 105 5.4.4. Pierwszy test integracyjny w unittest 108 5.4.5. Zamienniki testowe 110 5.4.6. Wypróbuj 112 5.4.7. Pisanie ciekawych testów 114 5.5. Testowanie z pytest 114 5.5.1. Organizowanie testów w pytest 115 5.5.2. Konwersja testów w unittest na pytest 115 5.6. Poza testowaniem funkcjonalnym 116 5.6.1. Testy wydajności 116 5.6.2. Testowanie obciążenia 117 5.7. Rozwój oparty na testach: podstawy 117 5.7.1. To sposób myślenia 118 5.7.2. To filozofia 118 CZĘŚĆ III. ARANŻACJA DUŻYCH SYSTEMÓW 121 Rozdział 6. Rozdzielanie aspektów w praktyce 123 6.1. Aplikacja do tworzenia zakładek z wiersza poleceń 124 6.2. Wycieczka po Bark 125 6.2.1. Korzyści wynikające z rozdzielenia: powtórzenie 125 6.3. Początkowa struktura kodu, według aspektów 126 6.3.1. Warstwa przechowywania danych 127 6.3.2. Warstwa logiki biznesowej 136 6.3.3. Warstwa prezentacji 140 Rozdział 7. Rozszerzalność i elastyczność 149 7.1. Co to jest kod rozszerzalny? 149 7.1.1. Dodawanie nowych zachowań 150 7.1.2. Modyfikacja istniejących zachowań 152 7.1.3. Luźne wiązanie 153 7.2. Rozwiązania dla sztywności 155 7.2.1. Oddawanie: odwrócenie sterowania 155 7.2.2. Diabeł tkwi w szczegółach: poleganie na interfejsach 158 7.2.3. Zwalczanie entropii: zasada odporności 159 7.3. Ćwiczenie rozszerzalności 160 Rozdział 8. Zasady (i wyjątki) dziedziczenia 165 8.1. Historia dziedziczenia w programowaniu 165 8.1.1. Panaceum 166 8.1.2. Wyzwania hierarchii 166 8.2. Dziedziczenie obecnie 168 8.2.1. Do czego służy dziedziczenie 168 8.2.2. Zastępowalność 169 8.2.3. Idealny przypadek użycia dziedziczenia 170 8.3. Dziedziczenie w Pythonie 173 8.3.1. Inspekcja typu 173 8.3.2. Dostęp do klasy bazowej 174 8.3.3. Wielokrotne dziedziczenie i kolejność rozwiązywania metod 174 8.3.4. Abstrakcyjne klasy bazowe 178 8.4. Dziedziczenie i kompozycja w programie Bark 180 8.4.1. Refaktoryzacja w celu użycia abstrakcyjnej klasy bazowej 180 8.4.2. Ostateczne spojrzenie na wykonane dziedziczenie 182 Rozdział 9. Zapewnianie lekkości 183 9.1. Jak duża powinna być klasa/funkcja/moduł 183 9.1.1. Fizyczny rozmiar 184 9.1.2. Pojedyncza odpowiedzialność 184 9.1.3. Złożoność kodu 185 9.2. Rozkładanie złożoności 189 9.2.1. Wyodrębnianie konfiguracji 189 9.2.2. Wyodrębnianie funkcji 191 9.3. Dekompozycja klas 193 9.3.1. Złożoność inicjacji 193 9.3.2. Wyodrębnianie klas i przekazywanie wywołań 195 Rozdział 10. Luźne wiązania w praktyce 201 10.1. Definicja wiązania 201 10.1.1. Tkanka łączna 201 10.1.2. Ścisłe wiązania 202 10.1.3. Luźne wiązania 205 10.2. Rozpoznawanie wiązania 208 10.2.1. Zazdrość o funkcje 208 10.2.2. Chirurgia przy użyciu strzelby 209 10.2.3. Nieszczelne abstrakcje 209 10.3. Wiązania w programie Bark 210 10.4. Radzenie sobie z wiązaniami 212 10.4.1. Powiadamianie użytkownika 212 10.4.2. Przechowywanie zakładek 215 10.4.3. Wypróbuj 216 CZĘŚĆ IV. CO DALEJ? 221 Rozdział 11. Dalej i wyżej 223 11.1. Co teraz 223 11.1.1. Opracuj plan 224 11.1.2. Wykonaj plan 225 11.1.3. Śledź swoje postępy 227 11.2. Wzorce projektowe 228 11.2.1. Mocne i słabe strony wzorców projektowych w Pythonie 229 11.2.2. Tematy, od których zacząć 230 11.3. Systemy rozproszone 230 11.3.1. Tryby awarii w systemach rozproszonych 231 11.3.2. Adresowanie stanu aplikacji 232 11.3.3. Tematy, od których zacząć 232 11.4. Zanurz się głęboko w Pythonie 232 11.4.1. Styl kodu w języku Python 232 11.4.2. Funkcje językowe są wzorcami 233 11.4.3. Tematy, od których zacząć 234 11.5. Gdzie byłeś 234 11.5.1. Tam i z powrotem: opowieść programisty 234 Instalacja Pythona 237
Sygnatura czytelni BWEAiI: XII Ł 209
Ta pozycja znajduje się w zbiorach 2 placówek. Rozwiń listę, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 152521 N (1 egz.)
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 152520 (1 egz.)
Książka
W koszyku
W książce także ISBN oryginału.
Bibliografie, netografie przy rozdziałach.
1.Finanse i Python Krótka historia finansów Główne trendy w finansach Świat czterech języków Podejście zastosowane w tej książce Pierwsze kroki z Pythonem 2.Gospodarka dwustanowa Gospodarka Aktywa rzeczowe Agenci Czas Pieniądze Przepływy pieniężne Zysk Odsetki Wartość bieżąca Wartość bieżąca netto Niepewność Aktywa finansowe Ryzyko Miara probabilistyczna Oczekiwana wartość Oczekiwany zysk Zmienność Roszczenia warunkowe Replikacja Arbitraż cenowy Zupełność rynku Papiery wartościowe Arrowa-Debreu Wycena martyngałowa Pierwsze fundamentalne twierdzenie wyceny aktywów Wycena na podstawie oczekiwań Drugie fundamentalne twierdzenie wyceny aktywów Portfel średniej-wariancji 3.Gospodarka trójstanowa Niepewność Aktywa finansowe Osiągalne roszczenia warunkowe Wycena martyngałowa Miary martyngałowe Wycena obojętna na ryzyko Superreplikacja Replikacja przybliżona Linia rynku kapitałowego Model wyceny aktywów kapitałowych 4.Optymalność i równowaga Maksymalizacja użyteczności Krzywe obojętności Właściwe funkcje użyteczności Użyteczność logarytmiczna Użyteczność czasowo-addytywna Oczekiwana użyteczność Optymalny portfel inwestycyjny Czasowo-addytywna oczekiwana użyteczność Wycena na rynkach zupełnych Arbitraż cenowy Wycena martyngałowa Stopa procentowa wolna od ryzyka Przykład liczbowy (I) Wycena na rynkach niezupełnych Miary martyngałowe Wycena równowagi 5.Gospodarka statyczna Niepewność Zmienne losowe Przykłady liczbowe Aktywa finansowe Roszczenia warunkowe Zupełność rynku Fundamentalne twierdzenia wyceny aktywów Wycena opcji metodą Blacka-Scholesa-Mertona Zupełność modelu Blacka-Scholesa-Mertona Wycena opcji metodą dyfuzji ze skokami Mertona Wycena agenta reprezentatywnego 6.Gospodarka dynamiczna Dwumianowa wycena opcji Symulacja i wycena oparte na pętlach Pythona Symulacja i wycena oparte na kodzie wektoryzowanym Porównanie szybkości Wycena opcji metodą Blacka-Scholesa-Mertona Symulacja ścieżek cen akcji metodą Monte Carlo Wycena europejskiej opcji sprzedaży metodą Monte Carlo Wycena amerykańskiej opcji sprzedaży metodą Monte Carlo Matematyka Teoria finansów Programowanie w Pythonie Python w finansach Nauka o danych finansowych Handel algorytmiczny Finanse obliczeniowe Sztuczna inteligencja
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 153013 N (1 egz.)
Książka
W koszyku
Tytuł oryginału: Secret Recipes of the Python Ninja : Over 70 recipes that uncover powerful programming tactics in Python.
Na okładce logo wydawnictwa oryginału Packt Publishing.
Na książce także ISBN oryginału: 9781788294874.
Indeks.
Dla programistów tworzących oprogramowania w języku Python.
Rozdział 1. Praca z modułami Pythona Używanie i importowanie modułów i przestrzeni nazw Implementowanie wirtualnego środowiska Pythona Opcje dostępne podczas instalowania pakietu Pythona Wykorzystanie pliku wymagań i rozwiązywanie konfliktów Używanie lokalnych poprawek i plików ograniczeń Praca z pakietami Tworzenie pakietów i plików w formacie wheel Porównanie kodu źródłowego z kodem bajtowym Tworzenie pakietów modułu i odwoływanie się do nich Pliki binarne dla konkretnego systemu operacyjnego Umieszczanie programu w repozytorium PyPI Pakowanie projektu Przekazanie pakietu do repozytorium PyPI Rozdział 2. Zastosowanie interpretera Pythona Uruchamianie środowiska Pythona Opcje polecenia python Praca ze zmiennymi środowiskowymi Definiowanie skryptu jako wykonywalnego Zmiana sposobu uruchamiania interpretera interaktywnego Alternatywne implementacje Pythona Instalowanie Pythona w Windowsie Stosowanie programu uruchamiającego Pythona w Windowsie Osadzanie Pythona w innych aplikacjach Zastosowanie alternatywnej powłoki Pythona - IPython Zastosowanie alternatywnej powłoki Pythona - bpython Zastosowanie alternatywnej powłoki Pythona - DreamPie Rozdział 3. Praca z dekoratorami Przegląd funkcji Wprowadzenie do dekoratorów Stosowanie dekoratorów funkcji Stosowanie dekoratorów klas Przykłady dekoratorów Stosowanie modułu decorator Rozdział 4. Zastosowanie kolekcji w Pythonie Przegląd dostępnych kontenerów Implementacja nazwanej krotki Implementacja kolejki dwustronnej Implementacja klasy ChainMap Implementacja kolekcji Counter Implementacja klasy OrderedDict Implementacja klasy defaultdict Implementacja klasy UserDict Implementacja klasy UserList Implementacja klasy UserString Usprawnienie kolekcji Pythona Moduł collections-extended Rozdział 5. Generatory, współprogramy i przetwarzanie równoległe Sposób działania iteracji w Pythonie Stosowanie modułu itertools Stosowanie funkcji generatora Symulowanie wielowątkowości za pomocą współprogramów Kiedy należy stosować przetwarzanie równoległe? Rozwidlenie procesu Jak zaimplementować wielowątkowość? Jak zaimplementować wieloprocesowość? Rozdział 6. Praca z modułem math Pythona Stosowanie stałych i funkcji modułu math Praca z liczbami zespolonymi Usprawnienie pracy z liczbami typu decimal Zwiększenie dokładności za pomocą ułamków Praca z liczbami losowymi Stosowanie modułu secrets Implementowanie podstawowych operacji statystycznych Poprawa funkcjonalności za pomocą modułu comath Rozdział 7. Poprawa wydajności działania Pythona za pomocą PyPy Co to jest PyPy? Co to jest RPython? Rozdział 8. Dokumenty PEP Co to jest PEP? PEP 556 - mechanizm usuwania nieużytków wykorzystujący wątki PEP 554 - wiele podinterpreterów PEP 551 - większe bezpieczeństwo PEP 543 - ujednolicone API TLS Rozdział 9. Dokumentowanie kodu za pomocą LyX Techniki i narzędzia Pythona związane z dokumentowaniem kodu Komentarze osadzone i wywołanie dir() Stosowanie komentarzy typu docstring Stosowanie narzędzia PyDoc Raporty w formacie HTML Stosowanie plików w formacie reStructuredText Stosowanie LaTeX i LyX do przygotowania dokumentacji
Sygnatura czytelni BWEAiI: XII Ł 157
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 148510 N (1 egz.)
Książka
W koszyku
Wydanie 4. odnosi się do oryginału.
Indeks.
Aktualny stan Pythona Co zrobić z kodem w Pythonie 2? Dokumenty PEP Aktywne społeczności Nowoczesne środowiska programistyczne Pythona Ekosystem pakietów Pythona Instalowanie pakietów Pythona za pomocą narzędzia pip Izolowanie środowiska uruchomieniowego Izolacja na poziomie aplikacji a izolacja na poziomie systemu Izolacja środowiska na poziomie aplikacji Poetry jako system zarządzania zależnościami Izolacja środowiska na poziomie systemu Konteneryzacja a wirtualizacja Zarządzanie środowiskami wirtualnymi z użyciem Dockera Wirtualne środowiska programistyczne oparte na narzędziu Vagrant Popularne narzędzia do zwiększania produktywności Niestandardowe powłoki Pythona Stosowanie powłoki IPython Stosowanie powłok we własnych skryptach i programach Interaktywne debugery Inne narzędzia do zwiększania produktywności Niedawne dodatki do języka Operatory scalania i aktualizacji słownika Wyrażenia przypisania Wskazówki dotyczące typów w typach generycznych Parametry czysto pozycyjne Moduł zoneinfo Moduł graphlib Funkcja breakpoint() Tryb roboczy Funkcje __getattr__() i __dir__() na poziomie modułu Formatowanie łańcuchów znaków za pomocą obiektów f-string Podkreślenia w literałach liczbowych Moduł secrets Tworzenie sumy typów za pomocą operatora | Strukturalne dopasowywanie wzorców Porównanie Pythona z innymi językami Model klas i programowanie obiektowe Dostęp do klas bazowych Wielodziedziczenie i porządek MRO Inicjalizowanie instancji klasy Wzorce dostępu do atrybutów Deskryptory Dynamiczny polimorfizm Przeciążanie operatorów Przeciążanie funkcji i metod Klasy danych Programowanie funkcyjne Funkcje lambda Funkcje map(), filter() i reduce() Obiekty i funkcje częściowe Generatory Wyrażenia generatora Dekoratory Wyliczenia Interfejs, wzorce i modułowość Interfejsy Odrobina historii: zope.interface Stosowanie adnotacji funkcji i abstrakcyjnych klas bazowych Tworzenie interfejsów z wykorzystaniem adnotacji określających typ Odwrócenie sterowania i wstrzykiwanie zależności Odwrócenie sterowania w aplikacjach Stosowanie platform do wstrzykiwania zależności. Współbieżność Czym jest współbieżność? Wielowątkowość Obsługa wątków w Pythonie Kiedy należy stosować wielowątkowość? Przykładowa aplikacja wielowątkowa Wieloprocesowość Wbudowany moduł multiprocessing Stosowanie puli procesów Stosowanie modułu multiprocessing.dummy jako interfejsu do obsługi wielowątkowości Programowanie asynchroniczne Kooperatywna wielozadaniowość i asynchroniczne operacje wejścia - wyjścia Słowa kluczowe async i await w Pythonie Praktyczny przykład zastosowania programowania asynchronicznego Dostosowywanie nieasynchronicznego kodu do asynchroniczności za pomocą obiektów future Programowanie sterowane zdarzeniami Czym dokładnie jest programowanie sterowane zdarzeniami? Sterowanie zdarzeniami nie jest tożsame z asynchronicznością Programowanie sterowane zdarzeniami w GUI Komunikacja sterowana zdarzeniami Różne style programowania sterowanego zdarzeniami Styl oparty na wywołaniach zwrotnych Styl oparty na obserwowaniu obiektów Styl oparty na tematach Architektury sterowane zdarzeniami Kolejki zdarzeń i komunikatów. Elementy metaprogramowania Czym jest metaprogramowanie? Stosowanie dekoratorów do modyfikowania działania funkcji przed jej użyciem Następny krok: dekoratory klas Przechwytywanie procesu tworzenia instancji klasy Metaklasy Ogólna składnia Stosowanie metaklas Pułapki związane z metaklasami Stosowanie metody __init_subclass__() jako alternatywy dla metaklas Generowanie kodu Funkcje exec, eval i compile Drzewa składni abstrakcyjnej Haczyki importu Ważne przykłady generowania kodu w Pythonie Łączenie Pythona z kodem w C i C++ C i C++ jako podstawa rozszerzalności w Pythonie Kompilowanie i wczytywanie w Pythonie rozszerzeń napisanych w C Kiedy należy używać rozszerzeń? Zwiększanie wydajności kluczowych fragmentów kodu Integrowanie istniejącego kodu napisanego w różnych językach Integrowanie zewnętrznych bibliotek dynamicznych Tworzenie wydajnych niestandardowych typów danych Pisanie rozszerzeń Rozszerzenia w czystym C Pisanie rozszerzeń za pomocą Cythona Wady korzystania z rozszerzeń Dodatkowa złożoność Trudniejsze debugowanie Komunikacja z bibliotekami dynamicznymi bez używania rozszerzeń Moduł ctypes CFFI Automatyzacja testów i kontroli jakości Zasady programowania sterowanego testami Pisanie testów z użyciem platformy pytest Parametryzacja testów Konfiguracje testów w platformie pytest Stosowanie "fałszywych" obiektów Atrapy i moduł unittest.mock Automatyzacja kontroli jakości Pokrycie kodu testami Narzędzia do poprawiania stylu i lintery Statyczna analiza typów Testowanie mutacyjne Przydatne narzędzia związane z testami Generowanie realistycznych danych Generowanie dat i czasu Tworzenie pakietów i udostępnianie kodu w Pythonie Tworzenie pakietów bibliotek i ich udostępnianie Budowa pakietu Pythona Rodzaje dystrybucji pakietów Rejestrowanie i publikowanie pakietów Wersjonowanie pakietów i zarządzanie zależnościami Instalowanie własnych pakietów Pakiety przestrzeni nazw Skrypty i punkty wejścia w pakietach Tworzenie pakietów aplikacji i usług do użytku w internecie Manifest Twelve-Factor App Korzystanie z Dockera Zarządzanie zmiennymi środowiskowymi Rola zmiennych środowiskowych w platformach do tworzenia aplikacji Tworzenie samodzielnych aplikacji wykonywalnych Kiedy samodzielne aplikacje wykonywalne są przydatne? Bezpieczeństwo kodu Pythona w pakietach wykonywalnych Monitorowanie pracy i wydajności aplikacji Rejestrowanie błędów i logów Podstawy rejestrowania logów w Pythonie Zalecane praktyki z obszaru rejestrowania logów Rozproszone rejestrowanie logów Rejestrowanie błędów w celu ich późniejszej analizy Instrumentacja kodu z wykorzystaniem niestandardowych wskaźników Stosowanie aplikacji Prometheus Śledzenie rozproszone aplikacji Śledzenie rozproszone za pomocą Jaegera Optymalizacja kodu Częste przyczyny niskiej wydajności Złożoność kodu Nadmierne wykorzystanie zasobów i ich wyciekanie Nadmierna liczba operacji wejścia - wyjścia i operacji blokujących Profilowanie kodu Profilowanie procesora Profilowanie wykorzystania pamięci Zmniejszanie złożoności przez wybór odpowiednich struktur danych Przeszukiwanie listy Stosowanie zbiorów Stosowanie modułu collections Architektoniczne kompromisy Stosowanie heurystyk i algorytmów aproksymacyjnych Stosowanie kolejek zadań i przetwarzania odroczonego Stosowanie probabilistycznych struktur danych Zapisywanie wyników w pamięci podręcznej
Sygnatura czytelni BWEAiI: XII Ł 213
Ta pozycja znajduje się w zbiorach 2 placówek. Rozwiń listę, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 153041 N (1 egz.)
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 152672 (1 egz.)
Książka
W koszyku
(Technologia i Rozwiązania)
Na stronie tytułowej i okładce nazwa wydawcy oryginału: Packt Publishing.
Na stronie tytułowej i okładce: Wydanie 2 - dotyczy wydania oryginału.
Indeks.
Obecny status Pythona (19) Gdzie jesteśmy i dokąd zmierzamy? (20) Dlaczego i jak zmienia się Python (20) Bądź na bieżąco ze zmianami języka - dokumenty PEP (21) Popularność Pythona 3 w chwili pisania tej książki (22) Główne różnice pomiędzy Pythonem 3 a Pythonem 2 (23) Korzyści płynące ze znajomości starej wersji Pythona (23) Główne różnice składni i częste pułapki (24) Popularne narzędzia i techniki używane w celu utrzymania kompatybilności (26) Nie tylko CPython (30) Dlaczego powinieneś się przejmować? (30) Stackless Python (31) Jython (31) IronPython (32) PyPy (33) Nowoczesne podejścia do programowania w Pythonie (34) Izolacja środowisk Pythona na poziomie aplikacji (34) Zalety stosowania izolacji (36) Popularne rozwiązania (37) Które rozwiązanie wybrać? (41) Izolacja środowisk Pythona na poziomie systemu operacyjnego (42) Wirtualne środowiska robocze z wykorzystaniem narzędzia Vagrant (43) Konteneryzacja czy wirtualizacja? (45) Popularne narzędzia pracy ukierunkowane na produktywność (45) Alternatywne powłoki Pythona - IPython, bpython, ptpython (46) Interaktywne debuggery (48) Przydatne materiały (49) Najlepsze praktyki składniowe - poniżej poziomu klas (51) Typy wbudowane Pythona (52) Ciągi znaków i bajtów (52) Kolekcje (56) Zaawansowane elementy składni (67) Iteratory (67) Instrukcja yield (69) Dekoratory (72) Zarządcy kontekstu - instrukcja with (83) Inne elementy składni, o których możesz jeszcze nie wiedzieć (87) Konstrukcja for ... else ... (87) Adnotacje funkcji (88) Najlepsze praktyki składniowe - powyżej poziomu klas (91) Dziedziczenie po typach wbudowanych (92) Uzyskiwanie dostępu do metod klas nadrzędnych (94) Klasy w starym stylu oraz funkcja super() w Pythonie 2 (96) Porządek rozpatrywania metod w Pythonie (97) Pułapki związane z funkcją super() (101) Najlepsze praktyki (104) Zaawansowane wzorce dostępu do atrybutów (104) Deskryptory (105) Właściwości (111) Sloty (114) Metaprogramowanie (114) Dekoratory jako metoda metaprogramowania (115) Dekoratory klas (116) Wykorzystanie metody __new__() w celu nadpisania procesu tworzenia instancji klas (118) Metaklasy (120) Rady dotyczące automatycznego generowania kodu (127) Właściwy dobór nazw (135) PEP 8 i najlepsze praktyki nazewnicze (135) Kiedy i dlaczego przestrzegać zasad PEP 8? (136) Poza PEP 8 - wytyczne stylu w zespołach (136) Notacje nazewnicze (137) Zmienne (138) Zmienne publiczne i prywatne (140) Funkcje i metody (142) Właściwości (145) Klasy (145) Moduły i pakiety (146) Dobre praktyki nazewnicze (146) Użycie prefiksów is oraz has przy elementach logicznych (146) Użycie liczby mnogiej przy zmiennych przechowujących kolekcje (146) Precyzyjne opisywanie słowników (147) Unikanie zbyt ogólnych określeń (147) Unikanie istniejących nazw (148) Najlepsze praktyki dla argumentów funkcji i metod (149) Projektowanie argumentów metodą przyrostową (150) Ufaj argumentom i testom (150) Ostrożne wykorzystanie magicznych argumentów *args oraz **kwargs (152) Nazwy klas (154) Nazwy modułów i pakietów (154) Przydatne narzędzia (155) Pylint (155) pep8 i flake8 (157) Tworzenie i dystrybucja pakietów (159) Tworzenie pakietów (160) Zamieszanie wokół narzędzi do tworzenia i dystrybuowania pakietów (160) Konfiguracja projektu (162) Własne polecenia skryptu setup.py (172) Praca z pakietami podczas ich rozwoju (172) Pakiety przestrzeni nazw (174) Zastosowanie pakietów przestrzeni nazw (174) PEP 420 - domyślne pakiety przestrzeni nazw (176) Pakiety przestrzeni nazw w starszych wersjach Pythona (177) Praca z repozytorium pakietów (178) Python Package Index - repozytorium pakietów Pythona (179) Dystrybucje źródłowe a dystrybucje budowane (181) Samodzielne pliki wykonywalne (184) Kiedy samodzielne pliki wykonywalne są użyteczne? (186) Popularne narzędzia (186) Bezpieczeństwo kodu Pythona w samodzielnych plikach wykonywalnych (193) Zdalne wdrożenia kodu (197) Manifest Twelve-Factor App (198) Automatyzacja wdrożeń z wykorzystaniem narzędzia Fabric (200) Własne repozytorium pakietów lub kopie lustrzane PyPI (205) Utrzymywanie kopii lustrzanych PyPI (206) Wdrożenia z wykorzystaniem dystrybucji pakietów (207) Popularne konwencje i dobre praktyki (215) Hierarchia systemu plików (215) Izolacja (216) Wykorzystanie narzędzi nadzoru nad procesami (216) Kod aplikacji powinien być uruchomiony w przestrzeni użytkownika (218) Korzystanie ze wstecznych serwerów proxy protokołu HTTP (219) Przeładowywanie procesów bez zastojów (219) Instrumentacja i monitorowanie kodu (221) Logowanie błędów (Sentry oraz raven) (221) Monitorowanie metryk systemowych i aplikacji (224) Obsługa logów (226) Rozszerzenia Pythona w innych językach programowania (231) Inne języki, czyli C lub C++ (232) Jak działają rozszerzenia w C i C++ (232) Dlaczego warto tworzyć rozszerzenia (234) Zwiększanie wydajności w krytycznych sekcjach kodu (235) Integracja kodu napisanego w innych językach programowania (236) Integracja zewnętrznych bibliotek dynamicznych (236) Tworzenie własnych wbudowanych typów danych (236) Pisanie rozszerzeń (237) Zwyczajne rozszerzenia w C (238) Cython (253) Wyzwania związane z rozszerzeniami (257) Dodatkowa złożoność (258) Debugowanie (258) Korzystanie z dynamicznych bibliotek bez pisania rozszerzeń (259) ctypes (259) CFFI (265) Zarządzanie kodem (267) Systemy kontroli wersji (268) Scentralizowane systemy kontroli wersji (268) Rozproszone systemy kontroli wersji (271) Systemy scentralizowane czy rozproszone? (274) Korzystaj z systemu Git, jeśli tylko możesz (274) Git flow oraz GitHub flow (275) Ciągłe procesy programistyczne (279) Ciągła integracja oprogramowania (280) Ciągłe dostarczanie oprogramowania (284) Ciągłe wdrażanie oprogramowania (285) Popularne narzędzia do ciągłej integracji (285) Wybór odpowiednich narzędzi i częste pułapki (294) Dokumentowanie projektu (299) Siedem zasad technicznego pisania (300) Pisz w dwóch krokach (300) Skieruj przekaz do konkretnej grupy czytelników (301) Korzystaj z prostego stylu (302) Ogranicz zakres informacji (303) Korzystaj z realistycznych przykładów (303) Dokumentuj lekko, ale jednocześnie wystarczająco (304) Korzystaj z szablonów (305) Poradnik reStructuredText (305) Struktura sekcji (307) Listy numerowane i wypunktowania (309) Formatowanie znakowe (310) Bloki dosłowne (310) Odnośniki (311) Budowanie dokumentacji (312) Budowanie portfolio dokumentacji (312) Tworzenie własnego portfolio (319) Projektowanie krajobrazu dokumentacji (319) Budowanie dokumentacji a systemy ciągłej integracji (324) Programowanie sterowane testami (327) Nie testuję (327) Zasady programowania sterowanego testami (328) Możliwe rodzaje testów (332) Narzędzia testowe standardowej biblioteki Pythona (335) Testuję (340) Pułapki modułu unittest (340) Alternatywy dla modułu unittest (341) Mierzenie pokrycia kodu testami (349) Fałszywe obiekty zastępcze i atrapy (351) Testowanie kompatybilności środowisk i zależności (358) Programowanie sterowane dokumentami (361) Optymalizacja - ogólne zasady i techniki profilowania (365) Trzy zasady optymalizacji (365) Przede wszystkim spraw, aby kod działał poprawnie (366) Pracuj z perspektywy użytkownika (367) Utrzymuj kod czytelnym (367) Strategia optymalizacyjna (368) Poszukaj innego winowajcy (368) Skaluj sprzęt (369) Napisz test wydajnościowy (370) Identyfikowanie wąskich gardeł wydajności (370) Profilowanie czasu użycia procesora (370) Profilowanie zużycia pamięci (379) Profilowanie połączeń sieciowych (389) Optymalizacja - wybrane skuteczne techniki (391) Redukcja złożoności (392) Złożoność cyklomatyczna (394) Notacja dużego O (394) Upraszczanie (397) Przeszukiwanie list (397) Korzystanie ze zbiorów w miejscu list (398) Ukróć zewnętrzne wywołania, zredukuj nakład pracy (398) Korzystanie z modułu collections (399) Stosowanie kompromisów architektonicznych (403) Stosowanie heurystyk i algorytmów aproksymacyjnych (403) Stosowanie kolejek zadań i opóźnionego przetwarzania (404) Stosowanie probabilistycznych struktur danych (408) Buforowanie (409) Buforowanie deterministyczne (410) Buforowanie niedeterministyczne (412) Usługi buforujące (413) Przetwarzanie współbieżne i równoległe (419) Dlaczego współbieżność? (420) Wielowątkowość (421) Czym jest wielowątkowość? (422) Jak Python radzi sobie z wątkami (423) Kiedy należy korzystać z wielowątkowości? (424) Przetwarzanie wieloprocesowe (439) Wbudowany moduł multiprocessing (442) Programowanie asynchroniczne (447) Kooperacyjna wielozadaniowość i asynchroniczne operacje wejścia/wyjścia (448) asyncio w starszych wersjach Pythona (453) Praktyczny przykład programu asynchronicznego (454) Integracja nieasynchronicznego kodu z async za pomocą modułu futures (456) Przydatne wzorce projektowe (461) Wzorce kreacyjne (462) Singleton (462) Wzorce strukturalne (465) Adapter (466) Pełnomocnik (481) Fasada (482) Wzorce czynnościowe (483) Obserwator (483) Odwiedzający (485) Szablon (488)
Sygnatura czytelni BWEAiI: XII Ł 80
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 144834 N (1 egz.)
Książka
W koszyku
Bibliografie przy większości rozdziałów.
Wprowadzenie do obliczeń w Pythonie Wektory, macierze i tablice wielowymiarowe Obliczenia symboliczne Wykresy i wizualizacje Rozwiązywanie równań Optymalizacja Interpolacja Całkowanie Równanie różnicznkowe zwyczajne Macierze rzadkie i grafy Równania różniczkowe cząstkowe Przetwarzanie i analiza danych Statystyka Modelowanie statystyczne Uczenie maszynowe Statystyka bayesowska Przetwarzanie sygnałów Wprowadzanie i wyprowadzanie danych Optymalizacja kodu Instalacja i konfiguracja środowiska
Sygnatura czytelni BMW: XII D 1 (nowy)
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka Międzywydziałowa
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 155375 N (1 egz.)
Książka
W koszyku
(Technologia i Rozwiązania)
Na s. tyt., okł.: Przekonaj się, jak fascynujące jest programowanie robotów!
Na okł. nazwa wydawcy oryg.: Packt Publishing.
U dołu okł. nazwa serii oryg.: Community Experience Distilled.
Streszczenie: Przedstawia zwięzłe podstawy robotyki i zasady projektowania oprogramowania robotów, aspekty projektowania CAD 2D i 3D z wykorzystaniem programów LibreCAD i Blender, sposoby budowania modeli 3D z wykorzystaniem API Blender dla Pythona, zagadnienia sprzętowej warstwy projektowania robota, zasady obsługi sensorów robotów, w tym programowanie sensorów wizji, obsługę rozpoznawania mowy i syntezę mowy z wykorzystaniem Pythona i ROS, implementację sztucznej inteligencji za pomocą Pythona, zagadnienie testowania i kalibrowania robota.
Sygnatura czytelni BWEAiI: XII Ł 150
Ta pozycja znajduje się w zbiorach 2 placówek. Rozwiń listę, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 143207 (1 egz.)
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 142958 N (1 egz.)
Książka
W koszyku
Python 3 : projekty dla początkujących i pasjonatów / Adam Jurkiewicz. - Gliwice : Helion Edukacja, copyright 2022. - 232 strony : faksymile, fotografie, ilustracje, mapy, wykresy ; 24 cm.
W książce rok wydania: 2022, data wpływu egzemplarza obowiązkowego: 2021.
Python w szkole Podstawa programowa 1. Podstawy języka Python 1.1. Po co w ogóle ten Python? IDLE środowisko do nauki języka Python, dla Linux, Windows i macOS Dla chętnych/zaawansowanych 1.2. Podstawowa wiedza o Pythonie Zmienne obiekty Wczytywanie danych z klawiatury Funkcje zmieniające typ danych Obiekty sekwencyjne i docieranie do ich elementów Sekwencyjne obiekty nieuporządkowane Pamięć operacyjna i przechowywane w niej obiekty Obiekty immutable i mutable Operatory arytmetyczne Instrukcje warunkowe Grupowanie bloków instrukcji warunkowych 1.3. Pętle Pętla iteracyjna for Pętla for i klauzula break Pętla for i klauzula continue Pętla for i funkcja range() Pętle zagnieżdżone Dla chętnych/zaawansowanych Pętla warunkowa while Dla chętnych/zaawansowanych Pętla while szczególny przypadek 1.4. Funkcje Funkcja srednia_ocen Funkcja z warunkiem Funkcja z wykresem 1.5. Importowanie modułów Różne sposoby importowania Instalacja modułów w systemie operacyjnym (pip) 1.6. Klasy obiektowe i podstawowe operacje niezbędne do tworzenia nowych klas i metod Konstruktor w programowaniu obiektowym Nasze metody w klasie Właściwości klasy Właściwości chronione Destruktor w programowaniu obiektowym Projekt programu z wykorzystaniem elementów obiektowych 1.7. Przestrzenie nazw dostęp do różnych obiektów Zmienna niemutowalna poza funkcją Zmienna mutowalna poza funkcją Klasa zawsze jest mutowalna 2. Gry wykorzystujące mechanikę ruchu Pong 2.1. Czym jest Pong? 2.2. Od czego zacząć: moduł Pygame Zero 2.3. Wprawiamy piłeczkę w ruch 2.4. Paletki wchodzą do gry 2.5. Programujemy wygraną Pełny kod 3. Gra w połączeniu z fizyką 3.1. Rzut poziomy 3.2. Wykres Dla chętnych/zaawansowanych Rozpakowywanie krotki Dla zainteresowanych/chętnych Obliczenia kolejnych danych Rysujemy wykres Pełny kod 4. Symulacje fizyczne animacja Układu Słonecznego 4.1. Symulacja Układu Słonecznego Instalowanie potrzebnych modułów 2. Obsługa błędów 4.2. Ruch planet w Układzie Słonecznym podstawy teoretyczne 4.3. Trudny kod plik r4_04.py Pełny kod 5. Prezentacja i wizualizacja danych 5.1. Moduł pandas 5.2. Wykres Pełny kod Dla zaawansowanych/chętnych 6. Wizualizacja danych na mapie 6.1. Moduł Cartopy 6.2. Przygotowanie i edycja danych 6.3. Przygotowanie mapy Pełny kod 7. Anonimizowanie danych Exif w zdjęciach 7.1. Odczytywanie informacji o zdjęciach 7.2. Anonimizowanie danych o zdjęciach 7.3. Rekurencja czyli wykonywanie funkcji przez nią samą 7.4. Sprawdzanie rekurencyjne katalogów w języku Python Pełny kod 8. System operacyjny ma znaczenie 8.1. Komputer 8.2. System operacyjny 8.3. Sprzęt i systemy operacyjne używane w pracy nad książką Sprzęt testowy Systemy operacyjne 8.4. Środowisko testowe Phoronix Test Suite Własny program testowy Wynik dla systemu Linux Wynik dla systemu Windows 8.5. Legalność oprogramowania Wolne oprogramowanie 8.6. Przykład konfiguracji systemu do codziennej pracy
Sygnatura czytelni BWEAiI: XII Ł 210
Ta pozycja znajduje się w zbiorach 2 placówek. Rozwiń listę, by zobaczyć szczegóły.
Wypożyczalnia
Wszystkie egzemplarze są obecnie wypożyczone: sygn. 152519 (1 egz.)
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 152518 (1 egz.)
Książka
W koszyku
Czysty kod w Pythonie / Sunil Kapil ; przekład Andrzej Watrak. - Gliwice : Helion, copyright 2020. - 176 stron : portrety ; 24 cm.
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 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 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 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 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 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 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 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 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
Sygnatura czytelni BWEAiI: XII A 29
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 149932 N (1 egz.)
Brak okładki
Książka
W koszyku
Na grzbiecie: Centrum Edukacyjne Promise, Grupa APN Promise.
Na okładce i karcie tytułowej: OʾReilly.
Indeks.
1.W przybliżeniu prawdopodobnie poprawne oprogramowanie Prawidłowe pisanie oprogramowania SOLID Testowanie albo TDD Refaktoring Pisanie prawidłowego oprogramowania Pisanie odpowiedniego oprogramowania przy zastosowaniu uczenia maszynowego Czym dokładnie jest uczenie maszynowe? Wysoko oprocentowany dług uczenia maszynowego Zastosowanie zasad SOLID w uczeniu maszynowym Kod uczenia maszynowego jest skomplikowany TDD: metoda naukowa 2.0 Refaktoring wiedzy 2.Szybkie wprowadzenie do uczenia maszynowego Czym jest uczenie maszynowe? Uczenie nadzorowane Uczenie nienadzorowane Uczenie wzmacniane Co może osiągnąć uczenie maszynowe? Notacja matematyczna używana w tej książce 3.K najbliższych sąsiadów Jak ustalić, czy chcemy kupić dom? Ile wart jest dany dom? Regresja hedonistyczna Czym jest sąsiedztwo? K najbliższych sąsiadów Najbliższe sąsiedztwo Odległości Nierówność trójkąta Odległość geometryczna Odległości obliczeniowe Odległości statystyczne Przekleństwo wymiarowości Jak wybrać K? Zgadywanie K Heurystyka wyboru K Wycenianie domów w Seattle Informacje o danych Ogólna strategia Projekt kodowania i testowania Konstrukcja regresora dla algorytmu K najbliższych sąsiadów Testowanie algorytmu K najbliższych sąsiadów 4.Naiwna klasyfikacja bayesowska Wykorzystanie twierdzenia Bayesa do znajdywania oszukańczych zamówień Prawdopodobieństwa warunkowe Symbole prawdopodobieństwa Odwrócone prawdopodobieństwo warunkowe (czyli twierdzenie Bayesa) Naiwny klasyfikator bayesowski Reguła łańcuchowa Naiwność w rozumowaniu bayesowskim Pseudozliczanie Filtr spamu Uwagi przygotowawcze Projekt kodowania i testowania Źródło danych EmailObject Analiza leksykalna i kontekst SpamTrainer Minimalizacja błędów przez sprawdzanie krzyżowe 5.Drzewa decyzyjne i losowe lasy decyzyjne Niuanse dotyczące grzybów Klasyfikowanie grzybów przy wykorzystaniu wiedzy ludowej Znajdowanie optymalnego punktu zwrotnego Zysk informacyjny Niejednorodność Giniego Redukcja wariancji Przycinanie drzew Uczenie zespołowe Pisanie klasyfikatora grzybów 6.Ukryte modele Markowa Śledzenie zachowania użytkownika przy użyciu automatów skończonych Emisje/obserwacje stanów Uproszczenie poprzez założenie Markowa Wykorzystanie łańcuchów Markowa zamiast automatu skończonego Ukryty model Markowa Ocena: algorytm Naprzód-Wstecz Matematyczne przedstawienie algorytmu Naprzód-Wstecz Wykorzystanie zachowania użytkownika Problem dekodowania poprzez algorytm Viterbiego Problem uczenia Oznaczanie części mowy z wykorzystaniem korpusu Browna Uwagi przygotowawcze Projekt kodowania i testowania Podstawa naszego narzędzia do oznaczania części mowy: CorpusParser Pisanie narzędzia do oznaczania części mowy Sprawdzanie krzyżowe w celu potwierdzenia poprawności modelu Jak ulepszyć ten model 7.Maszyny wektorów nośnych Zadowolenie klientów jako funkcja tego, co mówią Klasyfikacja nastrojów przy użyciu maszyn wektorów nośnych Teoria stojąca za maszynami wektorów nośnych Granica decyzyjna Maksymalizowanie granic Sztuczka jądrowa: transformacja cech Optymalizacja przez poluzowanie Analizator nastrojów Uwagi przygotowawcze Projekt kodowania i testowania Strategie testowania maszyny wektorów nośnych Klasa Corpus Klasa CorpusSet Sprawdzanie poprawności modelu i klasyfikator nastrojów Agregowanie nastrojów Wykładnicza ważona średnia ruchoma Mapowanie nastroju do wyniku finansowego 8.Sieci neuronowe Czym jest sieć neuronowa? Historia sieci neuronowych Logika boolowska Perceptrony Jak konstruować sieci neuronowe ze sprzężeniem w przód Warstwa wejściowa Warstwy ukryte Neurony Funkcje aktywacyjne Warstwa wyjściowa Algorytmy uczące Zasada delty Propagacja wsteczna QuickProp RProp Budowanie sieci neuronowych Ile ukrytych warstw? Ile neuronów dla każdej warstwy? Tolerancja błędów i maksymalna liczba epok Wykorzystanie sieci neuronowej do klasyfikowania języków Uwagi przygotowawcze Projekt kodowania i testowania Dane Pisanie testu podstawowego dla języka Przejście do klasy Network Dostrajanie sieci neuronowej Precyzja i czułość w sieciach neuronowych Podsumowanie przykładu 9. Grupowanie Badanie danych bez żadnego błędu systematycznego Kohorty użytkowników Testowanie mapowań do grup Zdatność grupy Współczynnik zarysu Porównywanie wyników z prawdą bazową Grupowanie K-średnich Algorytm K-średnich Słabe strony grupowania K-średnich Grupowanie przez maksymalizację wartości oczekiwanej Algorytm Twierdzenie o niemożności Przykład: kategoryzowanie muzyki Uwagi przygotowawcze Zbieranie danych Projekt kodowania Analizowanie danych przez algorytm K-średnich Grupowanie naszych danych Wyniki z grupowania danych dotyczących muzyki jazzowej z użyciem maksymalizowania wartości oczekiwanej 10.Poprawianie modeli i wydobywania danych Klub dyskusyjny Wybieranie lepszych danych Wybieranie cech Wyczerpujące wyszukiwanie Losowe wybieranie cech Lepszy algorytm wybierania cech Wybieranie cech przez minimalizowanie redundancji i maksymalizowanie istotności Transformacja cech i rozkład macierzy Analiza głównych składowych Analiza niezależnych składowych Uczenie zespołowe Grupowanie typu bootstrap Boosting Przypomnienie algorytmów uczenia maszynowego Jak wykorzystywać te informacje do rozwiązywania problemów
Sygnatura czytelni BWEAiI: XII Ł 98
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 146120 N (1 egz.)
Książka
W koszyku
Deep learning : praktyczne wprowadzenie z zastosowaniem środowiska Pythona / Ron Kneusel ; przekład: Krzysztof Sawka. - Gliwice : Helion, copyright 2022. - 472 strony : fotografie, ilustracje, wykresy ; 23 cm.
Na stronie tytułowej i okładce także nazwa wydawcy oryginału: No starch press.
Indeks.
Środowisko operacyjne NumPy scikit-learn Keras i TensorFlow Instalacja narzędzi Podstawy algebry liniowej Wektory Macierze Mnożenie wektorów i macierzy Statystyka i prawdopodobieństwo Statystyka opisowa Rozkłady prawdopodobieństwa Testy statystyczne Procesory graficzne (GPU) 2. Korzystanie z Pythona Interpreter Pythona Instrukcje i białe znaki Zmienne i podstawowe struktury danych Przedstawianie liczb Zmienne Łańcuchy znaków Listy Słowniki Struktury sterowania Instrukcje if-elif-else Pętle for Pętle while Instrukcje break i continue Instrukcja with Obsługa błędów za pomocą bloków try-except Funkcje Moduły 3. Biblioteka NumPy Dlaczego NumPy? Tablice a listy Testowanie szybkości tablic i list Definiowanie tablicy za pomocą funkcji, np. array Definiowanie tablic wypełnionych zerami i jedynkami Dostęp do elementów tablicy Indeksowanie tablicowe Uzyskiwanie wycinków tablicy Wielokropek Operatory i rozgłaszanie Dane wejściowe i wyjściowe tablic Liczby losowe Biblioteka NumPy i obrazy 4. Praca z danymi Klasy i etykiety Cechy i wektory cech Dobór cech i klątwa wymiarowości Własności dobrego zestawu danych Interpolacja i ekstrapolacja Główny rozkład prawdopodobieństwa Rozkład a priori Przykłady mylące Rozmiar zestawu danych Przygotowanie danych Skalowanie cech Brakujące cechy Dane uczące, walidacyjne i testowe Trzy podzbiory Dzielenie zestawu danych k-krotny sprawdzian krzyżowy Analiza danych Wyszukiwanie problemów z danymi 5. Budowanie zestawów danych Kosaćce (zestaw danych Iris) Nowotwory piersi (zestaw danych Breast Cancer) Cyfry zapisane pismem odręcznym (zestaw danych MNIST) Różne obrazy (zestaw danych CIFAR-10) Rozszerzanie danych Dlaczego należy rozszerzać dane uczące? Sposoby rozszerzania danych Rozszerzanie zestawu danych Iris Rozszerzanie zestawu danych CIFAR-10 6. Klasyczne uczenie maszynowe Algorytm najbliższego centroidu Algorytm k najbliższych sąsiadów Naiwny klasyfikator Bayesa Drzewa decyzyjne i lasy losowe Rekurencja Budowanie drzew decyzyjnych Lasy losowe Maszyny wektorów nośnych Marginesy Wektory nośne Optymalizacja Jądra 7. Eksperymentowanie z klasycznymi modelami Eksperymenty z użyciem zestawu danych Iris Testowanie klasycznych modeli Implementacja klasyfikatora najbliższego centroidu Eksperymenty z użyciem zestawu danych Breast Cancer Dwa pierwsze przebiegi testowe Skutek losowych podziałów Dodawanie k-krotnego sprawdzianu krzyżowego Poszukiwanie hiperparametrów Eksperymenty z użyciem zestawu danych MNIST Testowanie klasycznych modeli Analiza czasu działania Eksperymenty z głównymi składowymi analizy PCA Tasowanie zestawu danych Podsumowanie klasycznych modeli Algorytm najbliższego centroidu Algorytm k najbliższych sąsiadów Naiwny klasyfikator Bayesa Drzewa decyzyjne Lasy losowe Maszyny wektorów nośnych Kiedy używać klasycznych modeli? Korzystanie z małych zestawów danych Ograniczone zasoby obliczeniowe Dostęp do wyjaśnialnych modeli Praca z danymi wektorowymi 8. Wprowadzenie do sieci neuronowych Anatomia sieci neuronowej Neuron Funkcje aktywacji Architektura sieci Warstwy wyjściowe Wagi i obciążenia Implementacja prostej sieci neuronowej Przygotowanie zestawu danych Implementacja sieci neuronowej Uczenie i testowanie sieci neuronowej 9. Uczenie sieci neuronowej Algorytm gradientu prostego Wyszukiwanie minimów Aktualizowanie wag Stochastyczny spadek wzdłuż gradientu Grupy i minigrupy Funkcje wypukłe i niewypukłe Kończenie uczenia Aktualizowanie współczynnika uczenia Momentum Propagacja wsteczna Propagacja wsteczna - ujęcie pierwsze Propagacja wsteczna - ujęcie drugie Funkcje straty Błąd bezwzględny i błąd średniokwadratowy Entropia krzyżowa Inicjalizowanie wag Przetrenowanie i regularyzacja Przetrenowanie Regularyzacja Regularyzacja L2 Porzucanie 10. Eksperymentowanie z sieciami neuronowymi Nasz zestaw danych Klasa MLPClassifier Struktura sieci i funkcje aktywacji Kod Rozmiar grupy Podstawowy współczynnik uczenia Rozmiar zbioru uczącego Regularyzacja L2 Momentum Inicjalizacja wag Kolejność cech Ocenianie modeli Dlaczego dokładność jest niewystarczająca? Macierz pomyłek 2×2 Wskaźniki wyprowadzane z macierzy pomyłek Wyprowadzanie wskaźników na podstawie macierzy pomyłek Interpretowanie modeli za pomocą wskaźników Zaawansowane wskaźniki Informatywność i nacechowanie Wskaźnik F1 Współczynnik kappa Cohena Współczynnik korelacji Matthewsa Implementacja zaawansowanych wskaźników Krzywa charakterystyki operacyjnej odbiornika Dobór modeli Rysowanie wykresu wskaźników Analiza krzywej ROC Porównywanie modeli za pomocą analizy ROC Generowanie krzywej ROC Krzywa precyzji-czułości Przypadki wieloklasowe Rozszerzanie macierzy pomyłek Obliczanie dokładności ważonej Wieloklasowy współczynnik korelacji Matthewsa Wprowadzenie do splotowych sieci neuronowych Dlaczego splotowe sieci neuronowe? Splot Skanowanie za pomocą jądra Splot w przetwarzaniu obrazów Anatomia splotowej sieci neuronowej Różne typy warstw Przepuszczanie danych przez sieć splotową Warstwy splotowe Mechanizm działania warstwy splotowej Korzystanie z warstwy splotowej Wielokrotne warstwy splotowe Inicjalizacja warstwy splotowej Warstwy łączące Warstwy w pełni połączone Pełne warstwy splotowe Eksperymentowanie z biblioteką Keras i zestawem danych MNIST Budowanie sieci splotowych w bibliotece Keras Wczytywanie danych MNIST Budowanie modelu Uczenie i ocena modelu Tworzenie wykresu funkcji błędu Podstawowe eksperymenty Eksperymenty na architekturze Rozmiar zbioru uczącego, minigrup oraz liczba epok Optymalizatory Pełne sieci splotowe Budowa i trenowanie modelu Przygotowanie obrazów testowych Testowanie modelu Potasowane cyfry MNIST Eksperymentowanie z zestawem danych CIFAR-10 Zestaw CIFAR-10 - przypomnienie Praca na pełnym zestawie CIFAR-10 Budowanie modeli Analizowanie modeli Zwierzę czy pojazd? Model binarny czy wieloklasowy? Uczenie transferowe Strojenie modelu Przygotowanie zestawów danych Dostosowanie modelu do strojenia Testowanie modelu Studium przypadku: klasyfikowanie próbek dźwiękowych Budowanie zestawu danych Rozszerzanie zestawu danych Wstępne przetwarzanie danych Klasyfikowanie cech dźwiękowych Modele klasyczne Tradycyjna sieć neuronowa Splotowa sieć neuronowa Spektrogramy Klasyfikowanie spektrogramów Inicjalizacja, regularyzacja i normalizacja wsadowa Analiza macierzy pomyłek
Sygnatura czytelni BWEAiI: XII Ł 215
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 153005 (1 egz.)
Książka
W koszyku
Python i AI dla e-commerce / Sebastian Kondracki. - Gliwice : Helion, © 2022. - 490, [6] stron : fotografie, ilustracje, mapy, wykresy ; 24 cm.
CZĘŚĆ I. PYTHON: KRÓTKI WSTĘP DO EFEKTYWNEGO PROGRAMOWANIA Rozdział 1. Narzędzia 1.1.Google Colab 1.2.Wirtualne środowiska Rozdział 2. Struktury danych 2.1.Napisy 2.2.Lista (list) 2.3.Krotka (tupie) 2.4.Zbiór zmienny (set) 2.5.Tablica asocjacyjna — słownik (diet) 2.6.Klasy i obiekty 2.7.Podsumowanie struktur danych Rozdział 3. Niezbędnik programisty 3.1.Wyrażenia regularne 3.2.Wizualizacja procesu 3.3.Lambda, wyrażenia listowe i generatory 3.4.Wyjątki 3.5.Odczyt i zapis plików Rozdział 4. NumPy i Pandas w akcji 4.1.NumPy 4.2.Pandas Rozdział 5. Bazy danych i repozytoria danych 5.1.Bazy relacyjne (SQL) 5.2.Technologia noSQL Podsumowanie części I CZĘŚĆ II. Al — PRZEGLĄD TECHNIK I ALGORYTMÓW Rozdział 6. Czym jest sztuczna inteligencja? Rozdział 7. Uczenie maszynowe 7.1.Nadzorowane uczenie maszynowe 7.2.Nienadzorowane uczenie maszynowe 7.3.Uczenie maszynowe ze wzmocnieniem 7.4.Głębokie uczenie Rozdział 8. Zastosowania maszynowego uczenia 8.1.„Tradycyjny" machinę learning 8.2.Przetwarzanie języka naturalnego (NLP) 8.3.Uczenie maszynowe w e-commerce Rozdział 9. Dane, dane, dane 9.1.Świat 9.2.Polska CZĘŚĆ III. PRZEPISY Rozdział 10. Web scraping 10.1.Zacznijmy od podstaw 10.2.Biblioteka Requests i Beautiful Soup 10.3.Scrapy 10.4.Przeglądarko-drivery i selenium Rozdział 11. Słów kilka o przetwarzaniu języka naturalnego Rozdział 12. Uczenie nadzorowane — klasyfikatory 12.1.Odczyt danych 12.2.Wstępny przegląd danych 12.3.Podział zbioru na dane treningowe i testowe 12.4.Wektoryzacja 12.5.Trening 12.6.Ocena modelu 12.7.Biuro obsługi klienta Masz wiadomość! Rozdział 13. Klasyfikacja w służbie niskiej rezygnacji 13.1.Przegląd danych 13.2.Problem luk informacyjnych w danych 13.3.Przegląd i wybór cech 13.4.Ostateczne przygotowanie się do preparacji danych do uczenia 13.5.Finał, czyli stwórzmy sobie potok 13.6.Ocena modelu 13.7.Poszukajmy lepszego rozwiązania Rozdział 14. Systemy rekomendacji, czyli jak zwiększyć koszyk 14.1.Content-based Filtering 14.2.Collaborative Filtering 14.3.Rekomendacje w praktyce Rozdział 15. Stuninguj swój sklep 15.1.RESTful JSON API (Python/Flask) 15.2.Instalacja projektu na zewnętrznym serwerze 15.3.Google Tag Manager 15.4.Serializacja modelu
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 152673 N (1 egz.)
Książka
W koszyku
Wydanie 3. odnosi się do oryginału.
Indeks.
Pierwsze kroki z uczeniem maszynowym w Pythonie Różnice między uczeniem maszynowym a automatyką Nadmierne i niedostateczne dopasowanie modelu oraz kompromis między obciążeniem a wariancją Zapobieganie nadmiernemu dopasowaniu poprzez weryfikację krzyżową Zapobieganie nadmiernemu dopasowaniu za pomocą regularyzacji Zapobieganie nadmiernemu dopasowaniu poprzez selekcję cech i redukcję wymiarowości Wstępne przetwarzanie danych i inżynieria cech Wstępne przetwarzanie i eksploracja danych Inżynieria cech Łączenie modeli Głosowanie i uśrednianie Agregacja bootstrap Wzmacnianie Składowanie Instalacja i konfiguracja oprogramowania Przygotowanie Pythona i środowiska pracy Instalacja najważniejszych pakietów Pythona Wprowadzenie do pakietu TensorFlow 2 Tworzenie systemu rekomendacji filmów na bazie naiwnego klasyfikatora Bayesa Pierwsze kroki z klasyfikacją Klasyfikacja binarna Klasyfikacja wieloklasowa Klasyfikacja wieloetykietowa Naiwny klasyfikator Bayesa Twierdzenie Bayesa w przykładach Mechanizm naiwnego klasyfikatora Bayesa Implementacja naiwnego klasyfikatora Bayesa Implementacja od podstaw Implementacja z wykorzystaniem pakietu scikit-learn Budowanie systemu rekomendacyjnego na bazie klasyfikatora Bayesa Ocena jakości klasyfikacji Strojenie modeli poprzez weryfikację krzyżową Rozpoznawanie twarzy przy użyciu maszyny wektorów nośnych Określanie granic klas za pomocą maszyny wektorów nośnych Scenariusz 1. Określenie hiperpłaszczyzny rozdzielającej Scenariusz 2. Określenie optymalnej hiperpłaszczyzny rozdzielającej Scenariusz 3. Przetwarzanie punktów odstających Implementacja maszyny wektorów nośnych Scenariusz 4. Więcej niż dwie klasy Scenariusz 5. Rozwiązywanie nierozdzielnego liniowo problemu za pomocą jądra Wybór między jądrem liniowym a radialną funkcją bazową Klasyfikowanie zdjęć twarzy za pomocą maszyny wektorów nośnych Badanie zbioru zdjęć twarzy Tworzenie klasyfikatora obrazów opartego na maszynie wektorów nośnych Zwiększanie skuteczności klasyfikatora obrazów za pomocą analizy głównych składowych Klasyfikacja stanu płodu w kardiotokografii Prognozowanie kliknięć reklam internetowych przy użyciu algorytmów drzewiastych Wprowadzenie do prognozowania kliknięć reklam Wprowadzenie do dwóch typów danych: liczbowych i kategorialnych Badanie drzewa decyzyjnego od korzeni do liści Budowanie drzewa decyzyjnego Wskaźniki jakości podziału zbioru Implementacja drzewa decyzyjnego od podstaw Implementacja drzewa decyzyjnego za pomocą biblioteki scikit-learn Prognozowanie kliknięć reklam za pomocą drzewa decyzyjnego Gromadzenie drzew decyzyjnych: las losowy Gromadzenie drzew decyzyjnych: drzewa ze wzmocnieniem gradientowym Prognozowanie kliknięć reklam internetowych przy użyciu regresji logistycznej Klasyfikowanie danych z wykorzystaniem regresji logistycznej Wprowadzenie do funkcji logistycznej Przejście od funkcji logistycznej do regresji logistycznej Trening modelu opartego na regresji logistycznej Trening modelu opartego na regresji logistycznej z gradientem prostym Prognozowanie kliknięć reklam z wykorzystaniem regresji logistycznej z gradientem prostym Trening modelu opartego na regresji logistycznej ze stochastycznym gradientem prostym Trening modelu opartego na regresji logistycznej z regularyzacją Selekcja cech w regularyzacji L1 Trening modelu na dużym zbiorze danych z uczeniem online Klasyfikacja wieloklasowa Implementacja regresji logistycznej za pomocą pakietu TensorFlow Selekcja cech z wykorzystaniem lasu losowego Skalowanie modelu prognozującego do terabajtowych dzienników kliknięć Podstawy Apache Spark Komponenty Instalacja Uruchamianie i wdrażanie programów Programowanie z wykorzystywaniem modułu PySpark Trenowanie modelu na bardzo dużych zbiorach danych za pomocą narzędzia Apache Spark Załadowanie danych o kliknięciach reklam Podzielenie danych i umieszczenie ich w pamięci Zakodowanie "1 z n" cech kategorialnych Trening i testy modelu regresji logistycznej Inżynieria cech i wartości kategorialnych przy użyciu narzędzia Apache Spark Mieszanie cech kategorialnych Interakcja cech, czyli łączenie zmiennych Prognozowanie cen akcji za pomocą algorytmów regresji Krótkie wprowadzenie do giełdy i cen akcji Co to jest regresja? Pozyskiwanie cen akcji Pierwsze kroki z inżynierią cech Pozyskiwanie danych i generowanie cech Szacowanie za pomocą regresji liniowej Jak działa regresja liniowa? Implementacja regresji liniowej od podstaw Implementacja regresji liniowej z wykorzystaniem pakietu scikit-learn Implementacja regresji liniowej z wykorzystaniem pakietu TensorFlow Prognozowanie za pomocą regresyjnego drzewa decyzyjnego Przejście od drzewa klasyfikacyjnego do regresyjnego Implementacja regresyjnego drzewa decyzyjnego Implementacja lasu regresyjnego Prognozowanie za pomocą regresji wektorów nośnych Implementacja regresji wektorów nośnych Ocena jakości regresji Prognozowanie cen akcji za pomocą trzech algorytmów regresji Prognozowanie cen akcji za pomocą sieci neuronowych Demistyfikacja sieci neuronowych Pierwsze kroki z jednowarstwową siecią neuronową Funkcje aktywacji Propagacja wstecz Wprowadzanie kolejnych warstw do sieci neuronowej i uczenie głębokie Tworzenie sieci neuronowej Implementacja sieci neuronowej od podstaw Implementacja sieci neuronowej przy użyciu pakietu scikit-learn Implementacja sieci neuronowej przy użyciu pakietu TensorFlow Dobór właściwej funkcji aktywacji Zapobieganie nadmiernemu dopasowaniu sieci Dropout Wczesne zakończenie treningu Prognozowanie cen akcji za pomocą sieci neuronowej Trening prostej sieci neuronowej Dostrojenie parametrów sieci neuronowej. Badanie 20 grup dyskusyjnych przy użyciu technik analizy tekstu
Jak komputery rozumieją ludzi, czyli przetwarzanie języka naturalnego Czym jest przetwarzanie języka naturalnego? Historia przetwarzania języka naturalnego Zastosowania przetwarzania języka naturalnego Przegląd bibliotek Pythona i podstawy przetwarzania języka naturalnego Instalacja najważniejszych bibliotek Korpusy Tokenizacja Oznaczanie części mowy Rozpoznawanie jednostek nazwanych Stemming i lematyzacja Modelowanie semantyczne i tematyczne Pozyskiwanie danych z grup dyskusyjnych Badanie danych z grup dyskusyjnych Przetwarzanie cech danych tekstowych Zliczanie wystąpień wszystkich tokenów Wstępne przetwarzanie tekstu Usuwanie stop-słów Upraszczanie odmian Wizualizacja danych tekstowych z wykorzystaniem techniki t-SNE Co to jest redukcja wymiarowości? Redukcja wymiarowości przy użyciu techniki t-SNE Rozdział 10. Wyszukiwanie ukrytych tematów w grupach dyskusyjnych poprzez ich klastrowanie i modelowanie tematyczne Nauka bez wskazówek, czyli uczenie nienadzorowane Klastrowanie grup dyskusyjnych metodą k-średnich Jak działa klastrowanie metodą k-średnich? Implementacja klastrowania metodą k-średnich od podstaw Implementacja klastrowania metodą k-średnich z wykorzystaniem pakietu scikit-learn Dobór wartości k Klastrowanie danych z grup dyskusyjnych metodą k-średnich Odkrywanie ukrytych tematów grup dyskusyjnych Modelowanie tematyczne z wykorzystaniem nieujemnej faktoryzacji macierzy Modelowanie tematyczne z wykorzystaniem ukrytej alokacji Dirichleta Proces rozwiązywania problemów uczenia maszynowego Dobre praktyki przygotowywania danych Dobra praktyka nr 1. Dokładne poznanie celu projektu Dobra praktyka nr 2. Zbieranie wszystkich istotnych pól Dobra praktyka nr 3. Ujednolicenie danych Dobra praktyka nr 4. Opracowanie niekompletnych danych Dobra praktyka nr 5. Przechowywanie dużych ilości danych Dobre praktyki tworzenia zbioru treningowego Dobra praktyka nr 6. Oznaczanie cech kategorialnych liczbami Dobra praktyka nr 7. Rozważenie kodowania cech kategorialnych Dobra praktyka nr 8. Rozważenie selekcji cech i wybór odpowiedniej metody Dobra praktyka nr 9. Rozważenie redukcji wymiarowości i wybór odpowiedniej metody Dobra praktyka nr 10. Rozważenie normalizacji cech Dobra praktyka nr 11. Inżynieria cech na bazie wiedzy eksperckiej Dobra praktyka nr 12. Inżynieria cech bez wiedzy eksperckiej Dobra praktyka nr 13. Dokumentowanie procesu tworzenia cech Dobra praktyka nr 14. Wyodrębnianie cech z danych tekstowych Dobre praktyki trenowania, oceniania i wybierania modelu Dobra praktyka nr 15. Wybór odpowiedniego algorytmu początkowego Dobra praktyka nr 16. Zapobieganie nadmiernemu dopasowaniu Dobra praktyka nr 17. Diagnozowanie nadmiernego i niedostatecznego dopasowania Dobra praktyka nr 18. Modelowanie dużych zbiorów danych Dobre praktyki wdrażania i monitorowania modelu Dobra praktyka nr 19. Zapisywanie, ładowanie i wielokrotne stosowanie modelu Dobra praktyka nr 20. Monitorowanie skuteczności modelu Dobra praktyka nr 21. Regularne aktualizowanie modelu Kategoryzacja zdjęć odzieży przy użyciu konwolucyjnej sieci neuronowej Bloki konstrukcyjne konwolucyjnej sieci neuronowej Warstwa konwolucyjna Warstwa nieliniowa Warstwa redukująca Budowanie konwolucyjnej sieci neuronowej na potrzeby klasyfikacji Badanie zbioru zdjęć odzieży Klasyfikowanie zdjęć odzieży za pomocą konwolucyjnej sieci neuronowej Tworzenie sieci Trening sieci Wizualizacja filtrów konwolucyjnych Wzmacnianie konwolucyjnej sieci neuronowej poprzez uzupełnianie danych Odwracanie obrazów w poziomie i pionie Obracanie obrazów Przesuwanie obrazów Usprawnianie klasyfikatora obrazów poprzez uzupełnianie danych Prognozowanie sekwencji danych przy użyciu rekurencyjnej sieci neuronowej Wprowadzenie do uczenia sekwencyjnego Architektura rekurencyjnej sieci neuronowej na przykładzie Mechanizm rekurencyjny Sieć typu "wiele do jednego" Sieć typu "jedno do wielu" Sieć synchroniczna typu "wiele do wielu" Sieć niesynchroniczna typu "wiele do wielu" Trening rekurencyjnej sieci neuronowej Długoterminowe zależności i sieć LSTM Analiza recenzji filmowych za pomocą sieci neuronowej Analiza i wstępne przetworzenie recenzji Zbudowanie prostej sieci LSTM Poprawa skuteczności poprzez wprowadzenie dodatkowych warstw Pisanie nowej powieści "Wojna i pokój" za pomocą rekurencyjnej sieci neuronowej Pozyskanie i analiza danych treningowych Utworzenie zbioru treningowego dla generatora tekstu Utworzenie generatora tekstu Trening generatora tekstu Zaawansowana analiza języka przy użyciu modelu Transformer Architektura modelu Samouwaga . Podejmowanie decyzji w skomplikowanych warunkach z wykorzystaniem uczenia przez wzmacnianie Przygotowanie środowiska do uczenia przez wzmacnianie Instalacja biblioteki PyTorch Instalacja narzędzi OpenAI Gym Wprowadzenie do uczenia przez wzmacnianie z przykładami Komponenty uczenia przez wzmacnianie Sumaryczna nagroda Algorytmy uczenia przez wzmacnianie Problem FrozenLake i programowanie dynamiczne Utworzenie środowiska FrozenLake Rozwiązanie problemu przy użyciu algorytmu iteracji wartości Rozwiązanie problemu przy użyciu algorytmu iteracji polityki Metoda Monte Carlo uczenia przez wzmacnianie Utworzenie środowiska Blackjack Ocenianie polityki w metodzie Monte Carlo Sterowanie Monte Carlo z polityką Problem taksówkarza i algorytm Q-uczenia Utworzenie środowiska Taxi Implementacja algorytmu Q-uczenia
Sygnatura czytelni BWEAiI: XII Ł 214
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 153052 (1 egz.)
Książka
W koszyku
Tytuł oryginału : Functional Python programming.
Na okładce nazwa wydawnictwa oryginalnego Packt.
Na książce także ISBN oryginału.
Indeks.
Podręcznik dla programistów.
Rozdział 1. Zrozumieć programowanie funkcyjne 17 Paradygmat programowania 18 Podział paradygmatu proceduralnego 19 Korzystanie z paradygmatu funkcyjnego 20 Korzystanie z funkcyjnych hybryd 22 Tworzenie obiektu 23 Stos żółwi 24 Klasyczny przykład programowania funkcyjnego 25 Eksploracyjna analiza danych 28 Rozdział 2. Podstawowe pojęcia programowania funkcyjnego 31 Funkcje pierwszej klasy 32 Czyste funkcje 32 Funkcje wyższego rzędu 33 Dane niemutowalne 34 Wartościowanie ścisłe i nieścisłe 36 Rekurencja zamiast jawnego stanu pętli 37 Funkcyjne systemy typów 41 Znajome terytorium 41 Rozdział 3. Funkcje, iteratory i generatory 45 Pisanie czystych funkcji 46 Funkcje jako obiekty pierwszej klasy 48 Korzystanie z łańcuchów znaków 49 Używanie krotek i krotek nazwanych 50 Korzystanie z wyrażeń generatorowych 52 Odkrywanie ograniczeń generatorów 54 Łączenie wyrażeń generatorowych 56 Czyszczenie surowych danych za pomocą funkcji generatorowych 56 Korzystanie z list, słowników i zbiorów 58 Korzystanie z mapowań stanowych 61 Wykorzystanie modułu bisect do tworzenia mapowania 63 Używanie stanowych zbiorów 64 Rozdział 4. Praca z kolekcjami 67 Przegląd rodzajów funkcji 68 Praca z obiektami iterowalnymi 68 Parsowanie pliku XML 69 Parsowanie pliku na wyższym poziomie 71 Tworzenie par elementów z sekwencji 73 Jawne użycie funkcji iter() 76 Rozszerzanie prostej pętli 77 Stosowanie wyrażeń generatorowych do funkcji skalarnych 80 Wykorzystanie funkcji any() i all() jako redukcji 81 Używanie funkcji len() i sum() 83 Używanie sum i zliczeń w obliczeniach statystycznych 84 Korzystanie z funkcji zip() do tworzenia struktury i spłaszczania sekwencji 87 Rozpakowywanie spakowanej sekwencji 88 Spłaszczanie sekwencji 89 Nadawanie struktury płaskim sekwencjom 90 Tworzenie struktury płaskich sekwencji - podejście alternatywne 92 Wykorzystanie funkcji reverse() do zmiany kolejności elementów 93 Wykorzystanie funkcji enumerate() w celu uwzględnienia numeru porządkowego 94 Rozdział 5. Funkcje wyższego rzędu 97 Wykorzystanie funkcji max() i min() do wyszukiwania ekstremów 98 Korzystanie z formatu wyrażeń lambda w Pythonie 101 Wyrażenia lambda i rachunek lambda 103 Korzystanie z funkcji map() w celu zastosowania funkcji do kolekcji 103 Wykorzystanie wyrażeń lambda i funkcji map() 104 Użycie funkcji map() w odniesieniu do wielu sekwencji 105 Wykorzystanie funkcji filter() do przekazywania lub odrzucania danych 107 Użycie funkcji filter() do identyfikacji wartości odstających 108 Funkcja iter() z wartością "strażnika" 109 Wykorzystanie funkcji sorted() do porządkowania danych 110 Pisanie funkcji wyższego rzędu 111 Pisanie mapowań i filtrów wyższego rzędu 112 Rozpakowywanie danych podczas mapowania 113 Opakowywanie dodatkowych danych podczas mapowania 115 Spłaszczanie danych podczas mapowania 116 Strukturyzacja danych podczas filtrowania 118 Pisanie funkcji generatorowych 119 Budowanie funkcji wyższego rzędu z wykorzystaniem obiektów wywoływalnych 121 Zapewnienie dobrego projektu funkcyjnego 123 Przegląd wybranych wzorców projektowych 124 Rozdział 6. Rekurencje i redukcje 127 Proste rekurencje numeryczne 128 Implementacja optymalizacji ogonowej 129 Pozostawienie rekurencji bez zmian 130 Obsługa trudnego przypadku optymalizacji ogonowej 131 Przetwarzanie kolekcji za pomocą rekurencji 132 Optymalizacja ogonowa dla kolekcji 133 Redukcje i składanie kolekcji z wielu elementów w jeden element 134 Redukcja grupowania - z wielu elementów do mniejszej liczby 136 Budowanie mapowania za pomocą metody Counter 136 Budowanie mapowania przez sortowanie 137 Grupowanie lub podział danych według wartości klucza 139 Pisanie bardziej ogólnych redukcji grupujących 142 Pisanie redukcji wyższego rzędu 143 Pisanie parserów plików 144 Rozdział 7. Dodatkowe techniki przetwarzania krotek 153 Używanie krotek do zbierania danych 154 Używanie krotek nazwanych do zbierania danych 156 Budowanie nazwanych krotek za pomocą konstruktorów funkcyjnych 159 Unikanie stanowych klas dzięki wykorzystaniu rodzin krotek 160 Przypisywanie rang statystycznych 163 Opakowanie zamiast zmiany stanu 165 Wielokrotne opakowanie zamiast zmian stanu 166 Obliczanie korelacji rangowej Spearmana 167 Polimorfizm i dopasowywanie typów ze wzorcami 169 Rozdział 8. Moduł itertools 175 Praca z iteratorami nieskończonymi 176 Liczenie za pomocą count() 176 Zliczanie z wykorzystaniem argumentów zmiennoprzecinkowych 177 Wielokrotne iterowanie cyklu za pomocą funkcji cycle() 179 Powtarzanie pojedynczej wartości za pomocą funkcji repeat() 181 Używanie iteratorów skończonych 182 Przypisywanie liczb za pomocą funkcji enumerate() 182 Obliczanie sum narastających za pomocą funkcji accumulate() 185 Łączenie iteratorów za pomocą funkcji chain() 186 Podział iteratora na partycje za pomocą funkcji groupby() 187 Scalanie obiektów iterowalnych za pomocą funkcji zip_longest() i zip() 188 Filtrowanie z wykorzystaniem funkcji compress() 189 Zbieranie podzbiorów za pomocą funkcji islice() 190 Filtrowanie stanowe z wykorzystaniem funkcji dropwhile() i takewhile() 191 Dwa podejścia do filtrowania za pomocą funkcji filterfalse() i filter() 192 Zastosowanie funkcji do danych z wykorzystaniem funkcji starmap() i map() 193 Klonowanie iteratorów za pomocą funkcji tee() 194 Receptury modułu itertools 195 Rozdział 9. Dodatkowe techniki itertools 199 Wyliczanie iloczynu kartezjańskiego 200 Redukowanie iloczynu 200 Obliczanie odległości 202 Uzyskanie wszystkich pikseli i wszystkich kolorów 204 Analiza wydajności 205 Przeformowanie problemu 207 Łączenie dwóch transformacji 207 Permutacje zbioru wartości 209 Generowanie wszystkich kombinacji 210 Receptury 212 Rozdział 10. Moduł functools 215 Narzędzia przetwarzania funkcji 216 Memoizacja wcześniejszych wyników za pomocą dekoratora lru_cache 216 Definiowanie klas z dekoratorem total_ordering 218 Definiowanie klas liczbowych 221 Stosowanie argumentów częściowych za pomocą funkcji partial() 222 Redukcja zbiorów danych za pomocą funkcji reduce() 223 Łączenie funkcji map() i reduce() 224 Korzystanie z funkcji reduce() i partial() 226 Użycie funkcji map() i reduce() do oczyszczania surowych danych 226 Korzystanie z funkcji reduce() i partial() 227 Rozdział 11. Techniki projektowania dekoratorów 231 Dekoratory jako funkcje wyższego rzędu 231 Korzystanie z funkcji update_wrapper() z modułu functools 235 Zagadnienia przekrojowe 236 Funkcje złożone 236 Wstępne przetwarzanie nieprawidłowych danych 238 Dekoratory z parametrami 239 Implementacja bardziej złożonych dekoratorów 242 Kwestie złożonego projektu 243 Rozdział 12. Moduły multiprocessing i threading 247 Programowanie funkcyjne a współbieżność 248 Co naprawdę oznacza współbieżność? 248 Warunki brzegowe 249 Współdzielenie zasobów za pomocą procesów lub wątków 249 Jak uzyskać największe korzyści? 250 Korzystanie z pul wieloprocesowych i zadań 251 Przetwarzanie wielu dużych plików 252 Parsowanie plików logu - pobieranie wierszy 253 Parsowanie wierszy logu do postaci obiektów namedtuple 254 Parsowanie dodatkowych pól obiektu Access 256 Filtrowanie szczegółów dostępu 259 Analiza szczegółów dostępu 261 Pełny proces analizy 262 Korzystanie z puli wieloprocesowej w celu przetwarzania równoległego 263 Korzystanie z funkcji apply() do wykonywania pojedynczych żądań 265 Korzystanie z funkcji map_async(), starmap_async() i apply_async() 265 Bardziej złożone architektury przetwarzania wieloprocesowego 266 Korzystanie z modułu concurrent.futures 267 Korzystanie z pul wątków modułu concurrent.futures 267 Korzystanie z modułów threading i queue 268 Projektowanie współbieżnego przetwarzania 268 Rozdział 13. Wyrażenia warunkowe i moduł operator 271 Ocena wyrażeń warunkowych 272 Wykorzystywanie nieścisłych reguł słownikowych 273 Filtrowanie wyrażeń warunkowych zwracających True 274 Wyszukiwanie pasującego wzorca 275 Używanie modułu operator zamiast wyrażeń lambda 276 Pobieranie wartości nazwanych atrybutów podczas korzystania z funkcji wyższego rzędu 278 Wykorzystanie funkcji starmap z operatorami 279 Redukcje z wykorzystaniem funkcji modułu operator 281 Rozdział 14. Biblioteka PyMonad 283 Pobieranie i instalacja modułu pymonad 284 Kompozycja funkcyjna i rozwijanie funkcji 284 Korzystanie z rozwijanych funkcji wyższego rzędu 286 Rozwijanie funkcji w trudny sposób 288 Kompozycja funkcyjna i operator * z biblioteki pymonad 288 Funktory zwykłe i aplikatywne 290 Korzystanie z leniwego funktora List() 291 Funkcja bind() i operator >> 294 Implementacja symulacji za pomocą monad 295 Dodatkowe własności biblioteki pymonad 298 Rozdział 15. Podejście funkcyjne do usług sieciowych 301 Model HTTP żądanie-odpowiedź 302 Wstrzykiwanie stanu za pomocą plików cookie 303 Serwer o projekcie funkcyjnym 304 Szczegóły widoku funkcyjnego 304 Zagnieżdżanie usług 305 Standard WSGI 306 Zgłaszanie wyjątków podczas przetwarzania WSGI 309 Praktyczne aplikacje WSGI 310 Definiowanie usług sieciowych jako funkcji 311 Tworzenie aplikacji WSGI 312 Pobieranie surowych danych 314 Stosowanie filtra 315 Serializowanie wyników 316 Serializacja danych w formatach JSON lub CSV 317 Serializacja danych do formatu XML 318 Serializacja danych do formatu HTML 319 Monitorowanie użycia 320 Rozdział 16. Optymalizacje i ulepszenia 323 Memoizacja i buforowanie 324 Specjalizacja memoizacji 325 Ogonowe optymalizacje rekurencji 327 Optymalizacja pamięci 328 Optymalizacja dokładności 329 Redukcja dokładności w zależności od wymagań odbiorców 329 Studium przypadku - podejmowanie decyzji na podstawie testu zgodności chi-kwadrat 330 Filtrowanie i redukcja surowych danych z wykorzystaniem obiektu Counter 332 Odczyt podsumowanych danych 333 Obliczanie sum za pomocą obiektu Counter 334 Obliczanie prawdopodobieństw na podstawie obiektów Counter 335 Obliczanie oczekiwanych wartości i wyświetlanie tabeli krzyżowej 337 Obliczanie wartości chi-kwadrat 339 Obliczanie progu wartości chi-kwadrat 339 Obliczanie niekompletnej funkcji gamma 340 Obliczanie kompletnej funkcji gamma 343 Obliczanie szans na losową dystrybucję 344 Funkcyjne wzorce projektowe 346
Sygnatura czytelni BWEAiI: XII Ł 151
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 148067 N (1 egz.)
Książka
W koszyku
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 104206 L (1 egz.)
Książka
W koszyku
Wydanie 5. odnosi się do oryginału.
Na stronie tytułowej również informacje o miejscach wydania i wydawcy oryginału - O'Reilly.
Rozdział 1. Pytania i odpowiedzi dotyczące Pythona Dlaczego ludzie używają Pythona? Jakość oprogramowania Wydajność programistów Czy Python jest językiem skryptowym? Jakie są wady języka Python? Kto dzisiaj używa Pythona? Co mogę zrobić za pomocą Pythona? Programowanie systemowe Graficzne interfejsy użytkownika (GUI) Skrypty internetowe Integracja komponentów Programowanie bazodanowe Szybkie prototypowanie Programowanie numeryczne i naukowe I dalej: gry, przetwarzanie obrazu, wyszukiwanie danych, robotyka, Excel Jak Python jest rozwijany i wspierany? Kompromisy związane z modelem open source Jakie są techniczne mocne strony Pythona? Jest zorientowany obiektowo i funkcyjny Jest darmowy Jest przenośny Ma duże możliwości Można go łączyć z innymi językami Jest względnie łatwy w użyciu Jest względnie łatwy do nauczenia się Zawdzięcza swoją nazwę Monty Pythonowi Jak Python wygląda na tle innych języków? Rozdział 2. Jak Python wykonuje programy? Wprowadzenie do interpretera Pythona Wykonywanie programu Z punktu widzenia programisty Z punktu widzenia Pythona Kompilacja kodu bajtowego Maszyna wirtualna Pythona Wpływ na wydajność Wpływ na proces programowania Warianty modeli wykonywania Alternatywne implementacje Pythona CPython standard Jython Python dla języka Java IronPython Python dla .NET Stackless: Python dla programowania współbieżnego PyPy Python dla szybkości i wydajności Narzędzia do optymalizacji działania programu Cython: hybryda Pythona/C Shed Skin: translator języka Python na C ++ Psyco oryginalny kompilator JIT Zamrożone pliki binarne Przyszłe możliwości? Rozdział 3. Jak wykonuje się programy? Interaktywny wiersz poleceń Uruchamianie sesji interaktywnej Ścieżka systemowa Nowe opcje systemu Windows w wersji 3.3: PATH, Launcher Gdzie zapisywać programy katalogi z kodem źródłowym Czego nie wpisywać znaki zachęty i komentarze Interaktywne wykonywanie kodu Do czego służy sesja interaktywna Eksperymentowanie Testowanie Uwagi praktyczne wykorzystywanie sesji interaktywnej Wpisywanie instrukcji wielowierszowych Systemowy wiersz poleceń i pliki źródłowe Pierwszy skrypt Wykonywanie plików z poziomu wiersza poleceń powłoki Sposoby użycia wiersza poleceń Uwagi praktyczne wykorzystywanie wierszy poleceń i plików Skrypty wykonywalne w stylu uniksowym #! Podstawy skryptów uniksowych Sztuczka z wyszukiwaniem programu przy użyciu polecenia env w systemie Unix Python 3.3 launcher #! w systemie Windows Klikanie ikon plików Podstawowe zagadnienia związane z klikaniem ikon plików Kliknięcie ikony w systemie Windows Sztuczka z funkcją input Inne ograniczenia programów uruchamianych kliknięciem ikony Importowanie i przeładowywanie modułów Podstawy importowania i przeładowywania modułów Więcej o modułach atrybuty Moduły i przestrzenie nazw Uwagi praktyczne instrukcje import i reload Wykorzystywanie funkcji exec do wykonywania plików modułów Interfejs użytkownika środowiska IDLE Szczegóły uruchamiania środowiska IDLE Podstawy środowiska IDLE Wybrane funkcje środowiska IDLE Zaawansowane narzędzia środowiska IDLE Uwagi praktyczne korzystanie ze środowiska IDLE Inne środowiska IDE Inne opcje wykonywania kodu Osadzanie wywołań Zamrożone binarne pliki wykonywalne Uruchamianie kodu z poziomu edytora tekstu Jeszcze inne możliwości uruchamiania Przyszłe możliwości? Jaką opcję wybrać? Część II Typy i operacje Rozdział 4. Wprowadzenie do typów obiektów Pythona Hierarchia pojęć w Pythonie Dlaczego korzystamy z typów wbudowanych Najważniejsze typy danych w Pythonie Liczby Łańcuchy znaków Operacje na sekwencjach Niezmienność Metody specyficzne dla typu Uzyskiwanie pomocy Inne sposoby kodowania łańcuchów znaków Ciągi znaków w formacie Unicode Dopasowywanie wzorców Listy Operacje na typach sekwencyjnych Operacje specyficzne dla typu Sprawdzanie granic Zagnieżdżanie Listy składane Słowniki Operacje na odwzorowaniach Zagnieżdżanie raz jeszcze Brakujące klucze testowanie za pomocą if Sortowanie kluczy pętle for Iteracja i optymalizacja Krotki Do czego służą krotki Pliki Pliki binarne Pliki tekstowe Unicode Inne narzędzia podobne do plików Inne typy podstawowe Jak zepsuć elastyczność kodu Klasy definiowane przez użytkownika I wszystko inne Rozdział 5. Typy liczbowe Podstawy typów liczbowych Pythona Literały liczbowe Wbudowane narzędzia liczbowe Operatory wyrażeń Pythona Połączone operatory stosują się do priorytetów Podwyrażenia grupowane są w nawiasach Pomieszane typy poddawane są konwersji Wprowadzenie: przeciążanie operatorów i polimorfizm Liczby w akcji Zmienne i podstawowe wyrażenia Formaty wyświetlania liczb Porównania zwykłe i łączone Dzielenie klasyczne, bez reszty i prawdziwe Obsługa różnych wersji Pythona Dzielenie bez reszty a odcinanie Dlaczego odcinanie ma znaczenie? Precyzja liczb całkowitych Liczby zespolone Notacja szesnastkowa, ósemkowa i dwójkowa literały i konwersje Operacje na poziomie bitów Inne wbudowane narzędzia numeryczne Inne typy liczbowe Typ Decimal (liczby dziesiętne) Typ Decimal zagadnienia podstawowe Globalne ustawianie precyzji liczb dziesiętnych Menedżer kontekstu dziesiętnego Typ Fraction (liczby ułamkowe) Typ Fraction zagadnienia podstawowe Dokładność numeryczna ułamków zwykłych i dziesiętnych Konwersje ułamków i typy mieszane Zbiory Podstawy zbiorów w Pythonie 2.6 i wersjach wcześniejszych Literały zbiorów w Pythonie 3.x i 2.7 Ograniczenia na obiekty niemutowalne i zbiory zamrożone Zbiory składane w Pythonie 3.x i 2.7 Dlaczego zbiory? Wartości Boolean Rozszerzenia numeryczne Rozdział 6. Wprowadzenie do typów dynamicznych Sprawa brakujących deklaracji typu Zmienne, obiekty i referencje Typy powiązane są z obiektami, a nie ze zmiennymi Obiekty są uwalniane Referencje współdzielone Referencje współdzielone a modyfikacje w miejscu Referencje współdzielone a równość Typy dynamiczne są wszędzie Rozdział 7. Łańcuchy znaków Co znajdziesz w tym rozdziale Unicode krótka historia Łańcuchy znaków podstawy Literały łańcuchów znaków Łańcuchy znaków w apostrofach i cudzysłowach są tym samym Sekwencje ucieczki reprezentują znaki specjalne Surowe łańcuchy znaków blokują sekwencje ucieczki Potrójne cudzysłowy i apostrofy kodują łańcuchy znaków będące wielowierszowymi blokami Łańcuchy znaków w akcji Podstawowe operacje Indeksowanie i wycinki Rozszerzone wycinki trzeci limit i obiekty wycinków Narzędzia do konwersji łańcuchów znaków Konwersje kodu znaków Modyfikowanie łańcuchów znaków Metody łańcuchów znaków Składnia wywoływania metod Metody typów znakowych Przykłady metod łańcuchów znaków modyfikowanie Przykłady metod łańcuchów znaków analiza składniowa tekstu Inne często używane metody łańcuchów znaków Oryginalny moduł string (usunięty w wersji 3.0) Wyrażenia formatujące łańcuchy znaków Formatowanie łańcuchów tekstu z użyciem wyrażeń formatujących podstawy Składnia zaawansowanych wyrażeń formatujących Przykłady zaawansowanych wyrażeń formatujących Wyrażenia formatujące oparte na słowniku Formatowanie łańcuchów z użyciem metody format Podstawy Używanie kluczy, atrybutów i przesunięć Zaawansowana składnia wywołań metody format Przykłady zaawansowanego formatowania łańcuchów znaków z użyciem metody format Porównanie metody format z wyrażeniami formatującymi Dlaczego miałbyś korzystać z metody format Dodatkowe możliwości: wbudowane funkcje czy ogólne techniki programowania Elastyczna składnia odwołań: dodatkowa złożoność i nakładanie się funkcjonalności Jawne odwołania do wartości: teraz opcjonalne i prawdopodobnie nie będą używane Nazwy metod i argumenty neutralne kontekstowo estetyka kodu kontra zastosowania praktyczne Funkcje a wyrażenia: niewielka wygoda Generalne kategorie typów Typy z jednej kategorii współdzielą zbiory operacji Typy mutowalne można modyfikować w miejscu Rozdział 8. Listy oraz słowniki Listy Listy w akcji Podstawowe operacje na listach Iteracje po listach i składanie list Indeksowanie, wycinki i macierze Modyfikacja list w miejscu Przypisywanie do indeksu i wycinków Wywołania metod list Kilka słów o sortowaniu list Inne, często stosowane metody list Inne popularne operacje na listach Słowniki Słowniki w akcji Podstawowe operacje na słownikach Modyfikacja słowników w miejscu Inne metody słowników Przykład baza danych o filmach Przykład mapowanie wartości na klucze Uwagi na temat korzystania ze słowników Wykorzystywanie słowników do symulowania elastycznych list liczby całkowite jako klucze Wykorzystywanie słowników z rzadkimi strukturami danych krotki jako klucze Unikanie błędów z brakującymi kluczami Zagnieżdżanie słowników Inne sposoby tworzenia słowników Zmiany dotyczące słowników w Pythonie 3.x i 2.7 Słowniki składane w wersjach 3.x i 2.7 Widoki słowników w wersji 3.x (oraz wersji 2.7 przy użyciu nowych metod) Widoki słowników i zbiory Sortowanie kluczy słowników w wersji 3.x Porównywanie rozmiarów słowników nie działa w 3.x W wersji 3.x metoda has_key nie istnieje, niech żyje in! Rozdział 9. Krotki, pliki i wszystko inne Krotki Krotki w akcji Właściwości składni krotek przecinki i nawiasy Konwersje, metody oraz niemutowalność Dlaczego istnieją listy i krotki Repetytorium: rekordy krotki nazwane Pliki Otwieranie plików Wykorzystywanie plików Pliki w akcji Pliki tekstowe i binarne krótka historia Przechowywanie obiektów Pythona w plikach i przetwarzanie ich Przechowywanie natywnych obiektów Pythona moduł pickle Przechowywanie obiektów Pythona w formacie JSON Przechowywanie spakowanych danych binarnych moduł struct Menedżery kontekstu plików Inne narzędzia powiązane z plikami Przegląd i podsumowanie podstawowych typów obiektów Elastyczność obiektów Referencje a kopie Porównania, testy równości i prawda Porównywania i sortowania typów mieszanych w Pythonie 2.x i 3.x Porównywanie słowników w Pythonie 2.x i 3.x Prawda czy fałsz, czyli znaczenie True i False w Pythonie Obiekt None Typ bool Hierarchie typów Pythona Obiekty typów Inne typy w Pythonie Pułapki typów wbudowanych Przypisanie tworzy referencje, nie kopie Powtórzenie dodaje jeden poziom zagłębienia Uwaga na cykliczne struktury danych Typów niemutowalnych nie można modyfikować w miejscu Sprawdź swoją wiedzę ćwiczenia do części drugiej Część III Instrukcje i składnia Rozdział 10. Wprowadzenie do instrukcji Pythona Raz jeszcze o hierarchii pojęciowej języka Python Instrukcje Pythona Historia dwóch if Co dodaje Python Co usuwa Python Nawiasy są opcjonalne Koniec wiersza jest końcem instrukcji Koniec wcięcia to koniec bloku Skąd bierze się składnia z użyciem wcięć Kilka przypadków specjalnych Przypadki specjalne dla reguły o końcu wiersza Przypadki specjalne dla reguły o wcięciach bloków Szybki przykład interaktywne pętle Prosta pętla interaktywna Wykonywanie obliczeń na danych wpisywanych przez użytkownika Obsługa błędów poprzez sprawdzanie danych wejściowych Obsługa błędów za pomocą instrukcji try Obsługa liczb zmiennoprzecinkowych Kod zagnieżdżony na trzy poziomy głębokości Rozdział 11. Przypisania, wyrażenia i wyświetlanie Instrukcje przypisania Formy instrukcji przypisania Przypisanie sekwencji Zaawansowane wzorce przypisywania sekwencji Rozszerzona składnia rozpakowania sekwencji w Pythonie 3.x Rozszerzona składania rozpakowania w działaniu Przypadki brzegowe Wygodny gadżet Zastosowanie w pętli for Przypisanie z wieloma celami Przypisanie z wieloma celami a współdzielone referencje Przypisania rozszerzone Przypisania rozszerzone a współdzielone referencje Reguły dotyczące nazw zmiennych Konwencje dotyczące nazewnictwa Nazwy nie mają typu, ale obiekty tak Instrukcje wyrażeń Instrukcje wyrażeń i modyfikacje w miejscu Polecenia print Funkcja print z Pythona 3.x Format wywołania Funkcja print z wersji 3.x w działaniu Instrukcja print w Pythonie 2.x Formy instrukcji Instrukcja print Pythona 2.x w działaniu Przekierowanie strumienia wyjściowego Program Witaj, świecie! Ręczne przekierowanie strumienia wyjścia Automatyczne przekierowanie strumienia Wyświetlanie niezależne od wersji Konwerter 2to3 Importowanie z __future__ Neutralizacja różnic w wyświetlaniu za pomocą kodu Rozdział 12. Testy if i reguły składni Instrukcje if Ogólny format Proste przykłady Rozgałęzienia kodu Obsługa domyślnych wartości wyboru Obsługa bardziej złożonych operacji Reguły składni Pythona raz jeszcze Ograniczniki bloków reguły tworzenia wcięć Unikaj mieszania tabulatorów i spacji nowa opcja sprawdzania błędów w Pythonie 3.x Ograniczniki instrukcji wiersze i znaki kontynuacji Kilka przypadków specjalnych Testy prawdziwości i testy logiczne Wyrażenie trójargumentowe if/else Rozdział 13. Pętle while i for Pętle while Ogólny format Przykłady Instrukcje break, continue, pass oraz else w pętli Ogólny format pętli Instrukcja pass Instrukcja continue Instrukcja break Klauzula else pętli Więcej o części pętli else Pętle for Ogólny format Przykłady Podstawowe zastosowanie Inne typy danych Przypisanie krotek w pętli for Rozszerzone przypisanie sekwencji w pętlach for w Pythonie 3.x Zagnieżdżone pętle for Techniki tworzenia pętli Pętle z licznikami range Skanowanie sekwencji pętla while z funkcją range kontra pętla for Przetasowania sekwencji funkcje range i len Przechodzenie niewyczerpujące range kontra wycinki Modyfikowanie list range kontra listy składane Przechodzenie równoległe zip oraz map Równoznaczność funkcji map w Pythonie 2.x Tworzenie słowników za pomocą funkcji zip Generowanie wartości przesunięcia i elementów enumerate Rozdział 14. Iteracje i listy składane Iteracje pierwsze spojrzenie Protokół iteracyjny iteratory plików Iterowanie ręczne iter i next Pełny protokół iteracji Iteracje ręczne Inne wbudowane typy iterowalne Listy składane wprowadzenie Podstawy list składanych Wykorzystywanie list składanych w plikach Rozszerzona składnia list składanych Klauzula filtrująca: if Zagnieżdżone pętle: klauzula for Inne konteksty iteracyjne Nowe obiekty iterowalne w Pythonie 3.x Wpływ na kod w wersji 2.x zalety i wady Obiekt iterowalny range Obiekty iterowalne map, zip i filter Iteratory wielokrotne kontra pojedyncze Obiekty iterowalne widoki słownika Inne zagadnienia związane z iteracjami Rozdział 15. Wprowadzenie do dokumentacji Źródła dokumentacji Pythona Komentarze ze znakami # Funkcja dir Notki dokumentacyjne __doc__ Notki dokumentacyjne zdefiniowane przez użytkownika Standardy i priorytety notek dokumentacyjnych Wbudowane notki dokumentacyjne PyDoc funkcja help PyDoc raporty HTML Python 3.2 i nowsze wersje: tryb PyDoc dla wszystkich przeglądarek Python 3.2 i wersje wcześniejsze: klient GUI Nie tylko notki docstrings pakiet Sphinx Zbiór standardowej dokumentacji Zasoby internetowe Publikowane książki Często spotykane problemy programistyczne Sprawdź swoją wiedzę ćwiczenia do części trzeciej Część IV Funkcje i generatory Rozdział 16. Podstawy funkcji Dlaczego używamy funkcji Tworzenie funkcji Instrukcje def Instrukcja def uruchamiana jest w czasie wykonania Pierwszy przykład definicje i wywoływanie Definicja Wywołanie Polimorfizm w Pythonie Drugi przykład przecinające się sekwencje Definicja Wywołania Raz jeszcze o polimorfizmie Zmienne lokalne Rozdział 17. Zasięgi Podstawy zasięgów w Pythonie Reguły dotyczące zasięgów Rozwiązywanie nazw reguła LEGB Inne zasięgi Pythona przegląd Przykład zasięgu Zasięg wbudowany Przedefiniowanie wbudowanych nazw: lepiej czy gorzej? Instrukcja global Projektowanie programów: minimalizowanie stosowania zmiennych globalnych Projektowanie programów: minimalizowanie modyfikacji dokonywanych pomiędzy plikami Inne metody dostępu do zmiennych globalnych Zasięgi a funkcje zagnieżdżone Szczegóły dotyczące zasięgów zagnieżdżonych Przykłady zasięgów zagnieżdżonych Funkcje fabrykujące: domknięcia Proste funkcje fabrykujące Funkcje fabrykujące kontra klasy, runda pierwsza Zachowywanie stanu zasięgu zawierającego za pomocą argumentów domyślnych Zasięgi zagnieżdżone, wartości domyślne i wyrażenia lambda Zmienne pętli mogą wymagać wartości domyślnych, a nie zasięgów Dowolne zagnieżdżanie zasięgów Instrukcja nonlocal w Pythonie 3.x Podstawy instrukcji nonlocal Instrukcja nonlocal w akcji Użycie zmiennych nielokalnych w celu modyfikacji Przypadki graniczne Czemu służą zmienne nonlocal? Opcje zachowania stanu Zachowanie stanu: zmienne nonlocal (tylko w wersji 3.x) Zachowanie stanu: zmienne globalne tylko jedna kopia Zachowanie stanu: klasy jawne atrybuty (wprowadzenie) Zachowanie stanu: atrybuty funkcji (w wersjach 3.x i 2.x) Zachowanie stanu: obiekty mutowalne duchy przeszłości języka Pyton? Rozdział 18. Argumenty Podstawy przekazywania argumentów Argumenty a współdzielone referencje Unikanie modyfikacji argumentów mutowalnych Symulowanie parametrów wyjścia i wielu wyników działania Specjalne tryby dopasowywania argumentów Podstawy dopasowywania argumentów Składnia dopasowania argumentów Dopasowywanie argumentów szczegóły Przykłady ze słowami kluczowymi i wartościami domyślnymi Słowa kluczowe Wartości domyślne Łączenie słów kluczowych i wartości domyślnych Przykłady dowolnych argumentów Nagłówki: zbieranie argumentów Wywołania: rozpakowywanie argumentów Ogólne zastosowanie funkcji Zlikwidowana wbudowana funkcja apply (Python 2.x) Argumenty tylko ze słowami kluczowymi (z Pythona 3.x) Reguły dotyczące kolejności Czemu służą argumenty ze słowami kluczowymi? Przykład z funkcją obliczającą minimum Pełne rozwiązanie Dodatkowy bonus Puenta Uogólnione funkcje działające na zbiorach Emulacja funkcji print z Pythona 3.0 Wykorzystywanie argumentów ze słowami kluczowymi Rozdział 19. Zaawansowane zagadnienia dotyczące funkcji Koncepcje projektowania funkcji Funkcje rekurencyjne Sumowanie z użyciem rekurencji Implementacje alternatywne Pętle a rekurencja Obsługa dowolnych struktur Rekurencja kontra kolejki i stosy Cykle, ścieżki i ograniczenia stosu Więcej przykładów rekurencji Obiekty funkcji atrybuty i adnotacje Pośrednie wywołania funkcji obiekty pierwszej klasy Introspekcja funkcji Atrybuty funkcji Adnotacje funkcji w Pythonie 3.x Funkcje anonimowe lambda Podstawy wyrażeń lambda Po co używamy wyrażeń lambda Wielotorowe rozgałęzienia kodu finał Jak (nie) zaciemniać kodu napisanego w Pythonie Zasięgi: wyrażenia lambda również można zagnieżdżać Narzędzia programowania funkcyjnego Odwzorowywanie funkcji na obiekty iterowalne map Wybieranie elementów obiektów iterowalnych funkcja filter Łączenie elementów obiektów iterowalnych funkcja reduce Rozdział 20. Listy składane i generatory Listy składane i narzędzia funkcyjne Listy składane kontra funkcja map Dodajemy warunki i pętle zagnieżdżone filter Formalna składnia list składanych Przykład listy składane i macierze Nie nadużywaj list składanych: reguła KISS Druga strona medalu: wydajność, zwięzłość, ekspresyjność Funkcje i wyrażenia generatorów Funkcje generatorów yield kontra return Zawieszanie stanu Integracja protokołu iteracji Funkcje generatorów w działaniu Dlaczego funkcje generatorów? Rozszerzony protokół funkcji generatorów send kontra next Wyrażenia generatorów obiekty iterowalne spotykają złożenia Dlaczego wyrażenia generatora? Wyrażenia generatora a funkcja map Wyrażenia generatora a filtry Funkcje generatorów a wyrażenia generatorów Generatory są obiektami o jednoprzebiegowej iteracji Generowanie wyników we wbudowanych typach, narzędziach i klasach Generatory i narzędzia biblioteczne: skanery katalogów Generatory i funkcje aplikacji Przegląd: obiekty iterowalne definiowane przez użytkownika w klasach Przykład generowanie mieszanych sekwencji Sekwencje mieszające Proste funkcje Funkcje generatora Wyrażenia generatora Funkcja tester Permutacje: wszystkie możliwe kombinacje Nie nadużywaj generatorów: reguła EIBTI Inne spojrzenie: miejsce i czas, zwięzłość, ekspresyjność Przykład emulowanie funkcji zip i map za pomocą narzędzi iteracyjnych Tworzymy własną implementację funkcji map Własna wersja funkcji zip(...) i map(None, ...) Podsumowanie obiektów składanych Zakresy i zmienne składane Zrozumieć zbiory i słowniki składane Rozszerzona składnia zbiorów i słowników składanych Rozdział 21. Wprowadzenie do pomiarów wydajności Pomiary wydajności iteracji Moduł pomiaru czasu domowej roboty Skrypt mierzący wydajność Wyniki pomiarów czasu Wpływ wywołań funkcji: map Inne rozwiązania dla modułu do pomiaru czasu Użycie argumentów ze słowami kluczowymi w wersji 3.x Inne sugestie Mierzenie czasu iteracji z wykorzystaniem modułu timeit Podstawowe reguły korzystania z modułu timeit Interaktywne użycie i wywołania API Korzystanie z poziomu wiersza polecenia Mierzenie czasu działania instrukcji wielowierszowych Inne tryby użytkowania: instalacje, podsumowania i obiekty Moduł i skrypt testujący z użyciem modułu timeit Wyniki działania skryptu testującego Jeszcze trochę zabawy z mierzeniem wydajności Wygrana funkcji map i rzadka porażka PyPy Jeszcze kilka słów o wpływie wywołań funkcji Techniki porównywania własne funkcje kontra moduł timeit Możliwości ulepszenia kod instalacyjny Inne zagadnienia związane z mierzeniem szybkości działania kodu test pystone Pułapki związane z funkcjami Lokalne nazwy są wykrywane w sposób statyczny Wartości domyślne i obiekty mutowalne Funkcje, które nie zwracają wyników Różne problemy związane z funkcjami Otaczanie zasięgów i zmiennych pętli: funkcje fabrykujące Ukrywanie wbudowanych funkcji przez przypisania: cieniowanie Część V Moduły i pakiety Rozdział 22. Moduły wprowadzenie Dlaczego używamy modułów Architektura programu w Pythonie Struktura programu Importowanie i atrybuty Moduły biblioteki standardowej Jak działa importowanie 1. Odszukanie modułu 2. Kompilowanie (o ile jest to potrzebne) 3. Wykonanie Pliki kodu bajtowego __pycache__ w Pythonie 3.2+ Modele plików kodu bajtowego w akcji Ścieżka wyszukiwania modułów Konfigurowanie ścieżki wyszukiwania Wariacje ścieżki wyszukiwania modułów Lista sys.path Wybór pliku modułu Kody źródłowe modułów Priorytety wyboru Importowanie punktów zaczepienia i plików ZIP Pliki zoptymalizowanego kodu bajtowego
Rozdział 23. Podstawy tworzenia modułów Tworzenie modułów Nazwy modułów Inne rodzaje modułów Używanie modułów Instrukcja import Instrukcja from Instrukcja from * Operacja importowania jest przeprowadzana tylko raz Kod inicjalizujący Instrukcje import oraz from są przypisaniami Modyfikowanie elementów mutowalnych w modułach Modyfikowanie nazw pomiędzy plikami Równoważność instrukcji import oraz from Potencjalne pułapki związane z użyciem instrukcji from Kiedy wymagane jest stosowanie instrukcji import Przestrzenie nazw modułów Pliki generują przestrzenie nazw Słowniki przestrzeni nazw: __dict__ Kwalifikowanie nazw atrybutów Importowanie a zasięgi Zagnieżdżanie przestrzeni nazw Przeładowywanie modułów Podstawy przeładowywania modułów Przykład przeładowywania z użyciem reload Rozdział 24. Pakiety modułów Podstawy importowania pakietów Pakiety a ustawienia ścieżki wyszukiwania Pliki pakietów __init__.py Role pliku inicjalizacji pakietu Przykład importowania pakietu Instrukcja from a instrukcja import w importowaniu pakietów Do czego służy importowanie pakietów Historia trzech systemów Względne importowanie pakietów Zmiany w Pythonie 3.0 Podstawy importowania względnego Do czego służą importy względne Importowanie względne w wersji 3.x Względne importy a bezwzględne ścieżki pakietów Zasięg importów względnych Podsumowanie reguł wyszukiwania modułów Importy względne w działaniu Importowanie spoza pakietów Importy wewnątrz pakietów Importy są nadal względne w stosunku do bieżącego katalogu roboczego Użycie importów względnych i bezwzględnych Importy względne przeszukują tylko pakiety Importy są nadal względne w stosunku do katalogu roboczego (cd.) Pułapki związane z importem względnym w pakietach: zastosowania mieszane Problem Rozwiązanie nr 1: podkatalogi pakietów Rozwiązanie 2: import bezwzględny z użyciem pełnej ścieżki Przykład: aplikacja z kodem autotestu modułu (wprowadzenie) Pakiety przestrzeni nazw w Pythonie 3.3 Semantyka pakietów przestrzeni nazw Algorytm importu Wpływ na zwykłe pakiety: opcjonalne pliki __init__.py Pakiety przestrzeni nazw w akcji Zagnieżdżanie pakietów przestrzeni nazw Pliki nadal mają pierwszeństwo przed katalogami Rozdział 25. Zaawansowane zagadnienia związane z modułami Koncepcje związane z projektowaniem modułów Ukrywanie danych w modułach Minimalizacja niebezpieczeństw użycia from * _X oraz __all__ Włączanie opcji z przyszłych wersji Pythona: __future__ Mieszane tryby użycia __name__ oraz __main__ Testy jednostkowe z wykorzystaniem atrybutu __name__ Przykład kod działający w dwóch trybach Symbole walut: Unicode w akcji Notki dokumentacyjne: dokumentacja modułu w działaniu Modyfikacja ścieżki wyszukiwania modułów Rozszerzenie as dla instrukcji import oraz from Przykład moduły są obiektami Importowanie modułów z użyciem nazwy w postaci ciągu znaków Uruchamianie ciągów znaków zawierających kod Bezpośrednie wywołania: dwie opcje Przykład przechodnie przeładowywanie modułów Przeładowywanie rekurencyjne Testowanie przeładowań rekurencyjnych Rozwiązania alternatywne Testowanie wariantów przeładowania Pułapki związane z modułami Kolizje nazw modułów: pakiety i importowanie względne w pakietach W kodzie najwyższego poziomu kolejność instrukcji ma znaczenie Instrukcja from kopiuje nazwy, jednak łącza już nie Instrukcja from * może zaciemnić znaczenie zmiennych Funkcja reload może nie mieć wpływu na obiekty importowane za pomocą from Funkcja reload i instrukcja from a testowanie interaktywne Rekurencyjne importowanie za pomocą from może nie działać Część VI Klasy i programowanie zorientowane obiektowo Rozdział 26. Programowanie zorientowane obiektowo wprowadzenie Po co używa się klas Programowanie zorientowane obiektowo z dystansu Wyszukiwanie atrybutów dziedziczonych Klasy a instancje Wywołania metod klasy Tworzenie drzew klas Przeciążanie operatorów Programowanie zorientowane obiektowo oparte jest na ponownym wykorzystaniu kodu Polimorfizm i klasy Programowanie przez dostosowanie Rozdział 27. Podstawy tworzenia klas Klasy generują wiele obiektów instancji Obiekty klas udostępniają zachowania domyślne Obiekty instancji są rzeczywistymi elementami Pierwszy przykład Klasy dostosowujemy do własnych potrzeb przez dziedziczenie Drugi przykład Klasy są atrybutami w modułach Klasy mogą przechwytywać operatory Pythona Trzeci przykład Zwracamy wyniki lub nie Po co przeciążamy operatory Najprostsza klasa Pythona na świecie Jeszcze kilka słów o rekordach: klasy kontra słowniki Rozdział 28. Bardziej realistyczny przykład Krok 1. tworzenie instancji Tworzenie konstruktorów Testowanie w miarę pracy Wykorzystywanie kodu na dwa sposoby Krok 2. dodawanie metod Tworzenie kodu metod Krok 3. przeciążanie operatorów Udostępnienie sposobów wyświetlania Krok 4. dostosowywanie zachowania za pomocą klas podrzędnych Tworzenie klas podrzędnych Rozszerzanie metod niepoprawny sposób Rozszerzanie metod poprawny sposób Polimorfizm w akcji Dziedziczenie, dostosowanie do własnych potrzeb i rozszerzenie Programowanie zorientowane obiektowo idea Krok 5. dostosowanie do własnych potrzeb także konstruktorów Programowanie zorientowane obiektowo jest prostsze, niż się wydaje Inne sposoby łączenia klas Krok 6. wykorzystywanie narzędzi do introspekcji Specjalne atrybuty klas Uniwersalne narzędzie do wyświetlania Atrybuty instancji a atrybuty klas Nazwy w klasach narzędziowych Ostateczna postać naszych klas Krok 7. i ostatni przechowywanie obiektów w bazie danych Obiekty pickle i shelve Moduł pickle Moduł shelve Przechowywanie obiektów w bazie danych za pomocą shelve Interaktywna eksploracja obiektów shelve Uaktualnianie obiektów w pliku shelve Przyszłe kierunki rozwoju Rozdział 29. Szczegóły kodowania klas Instrukcja class Ogólna forma Przykład Metody Przykład metody Wywoływanie konstruktorów klas nadrzędnych Inne możliwości wywoływania metod Dziedziczenie Tworzenie drzewa atrybutów Specjalizacja odziedziczonych metod Techniki interfejsów klas Abstrakcyjne klasy nadrzędne Abstrakcyjne klasy nadrzędne z Pythona 3.x oraz 2.6+: wprowadzenie Przestrzenie nazw cała historia Proste nazwy globalne, o ile nie są przypisane Nazwy atrybutów przestrzenie nazw obiektów Zen przestrzeni nazw Pythona przypisania klasyfikują zmienne Klasy zagnieżdżone jeszcze kilka słów o regule LEGB Słowniki przestrzeni nazw przegląd Łącza przestrzeni nazw przechodzenie w górę drzewa klas Raz jeszcze o notkach dokumentacyjnych Klasy a moduły Rozdział 30. Przeciążanie operatorów Podstawy Konstruktory i wyrażenia __init__ i __sub__ Często spotykane metody przeciążania operatorów Indeksowanie i wycinanie __getitem__ i __setitem__ Wycinki Wycinanie i indeksowanie w Pythonie 2.x Metoda __index__ w wersji 3.x nie służy do indeksowania! Iteracja po indeksie __getitem__ Obiekty iteratorów __iter__ i __next__ Iteratory zdefiniowane przez użytkownika Skanowanie pojedyncze i wielokrotne Klasy i generatory Wiele iteracji po jednym obiekcie Klasy i wycinki Alternatywa: metoda__iter__ i instrukcja yield Wielokrotne iteracje za pomocą instrukcji yield Test przynależności __contains__, __iter__ i __getitem__ Dostęp do atrybutów __getattr__ oraz __setattr__ Odwołania do atrybutów Przypisywanie wartości i usuwanie atrybutów Inne narzędzia do zarządzania atrybutami Emulowanie prywatności w atrybutach instancji Reprezentacje łańcuchów __repr__ oraz __str__ Po co nam dwie metody wyświetlania? Uwagi dotyczące wyświetlania Dodawanie prawostronne i miejscowa modyfikacja: metody __radd__ i __iadd__ Dodawanie prawostronne Stosowanie metody __add__ w __radd__ Eskalowanie typu klasy Dodawanie w miejscu Wywołania __call__ Interfejsy funkcji i kod oparty na wywołaniach zwrotnych Porównania __lt__, __gt__ i inne Metoda __cmp__ w 2.x Testy logiczne __bool__ i __len__ Metody logiczne w Pythonie 2.x Destrukcja obiektu __del__ Uwagi dotyczące stosowania destruktorów Rozdział 31. Projektowanie z użyciem klas Python a programowanie zorientowane obiektowo Polimorfizm to interfejsy, a nie sygnatury wywołań Programowanie zorientowane obiektowo i dziedziczenie związek jest Programowanie zorientowane obiektowo i kompozycja związki typu ma Raz jeszcze procesor strumienia danych Programowanie zorientowane obiektowo a delegacja obiekty opakowujące Pseudoprywatne atrybuty klas Przegląd zniekształcania nazw zmiennych Po co używa się atrybutów pseudoprywatnych Metody są obiektami z wiązaniem i bez wiązania W wersji 3.x metody niezwiązane są funkcjami Metody związane i inne obiekty wywoływane Inne obiekty wywoływane Klasy są obiektami uniwersalne fabryki obiektów Do czego służą fabryki Dziedziczenie wielokrotne klasy mieszane Tworzenie klas mieszanych Odczyt listy atrybutów obiektu __dict__ Wydobywanie atrybutów odziedziczonych z użyciem dir() Wypisywanie atrybutów dla każdego obiektu w drzewie klas Uruchomienie kodu wyświetlającego drzewo Inny przykład użycia: wyświetlenie nazw zawierających znaki podkreślenia Inny przykład użycia: uruchomienie kodu z większymi modułami Moduł kolektora Miejsce na udoskonalenia: algorytm MRO, sloty, interfejsy graficzne Inne zagadnienia związane z projektowaniem Rozdział 32. Zaawansowane zagadnienia związane z klasami Rozszerzanie typów wbudowanych Rozszerzanie typów za pomocą osadzania Rozszerzanie typów za pomocą klas podrzędnych Klasy w nowym stylu Jak nowy jest nowy styl Nowości w klasach w nowym stylu Pomijanie instancji we wbudowanych operacjach przy pobieraniu atrybutów Dlaczego zmieniło się wyszukiwanie? Implikacje wynikające z przechwytywania atrybutów Wymogi kodowania obiektów pośredniczących Więcej informacji Zmiany w modelu typów Konsekwencje z perspektywy kontroli typów Wszystkie obiekty dziedziczą po klasie object Implikacje wynikające z użycia metod domyślnych Zmiany w dziedziczeniu diamentowym Implikacje wynikające z dziedziczenia diamentowego Jawne rozwiązywanie konfliktów Zakres zmian kolejności wyszukiwania Więcej o kolejności odwzorowywania nazw Algorytm MRO Śledzenie algorytmu MRO Przykład wiązanie atrybutów ze źródłami dziedziczenia Nowości w klasach w nowym stylu Sloty: deklaracje atrybutów Podstawy slotów Sloty i słowniki przestrzeni nazw Wiele slotów w klasach nadrzędnych Generyczna obsługa slotów i innych wirtualnych atrybutów Zasady używania slotów Przykład stosowania slotów: klasa ListTree i funkcja mapattrs Co z szybkością slotów? Właściwości klas: dostęp do atrybutów Podstawy właściwości Narzędzia atrybutów: __getattribute__ i deskryptory Inne zmiany i rozszerzenia klas Metody statyczne oraz metody klasy Do czego potrzebujemy metod specjalnych Metody statyczne w 2.x i 3.x Alternatywy dla metod statycznych Używanie metod statycznych i metod klas Zliczanie instancji z użyciem metod statycznych Zliczanie instancji z metodami klas Zliczanie instancji dla każdej z klas z użyciem metod klas Dekoratory i metaklasy część 1. Podstawowe informacje o dekoratorach funkcji Pierwsze spojrzenie na funkcję dekoratora zdefiniowaną przez użytkownika Pierwsze spojrzenie na dekoratory klas i metaklasy Dalsza lektura Wbudowana funkcja super: zmiana na lepsze czy na gorsze? Wielka debata o funkcji super Tradycyjny, uniwersalny i ogólny sposób wywoływania klasy nadrzędnej Podstawy i kompromisy użycia funkcji super Stara semantyka: magiczny obiekt pośredniczący w wersji 3.x Pułapka: beztroskie stosowanie wielokrotnego dziedziczenia Ograniczenie: przeciążanie operatorów Różnice w użyciu w wersji 2.x: rozbudowane wywołania Zalety funkcji super: zmiany drzewa i kierowania metod Zmiana klasy w trakcie działania programu a funkcja super Kooperatywne kierowanie metod w drzewie wielokrotnego dziedziczenia Podstawy: kooperatywne wywołanie funkcji super w akcji Ograniczenie: wymóg zakotwiczenia łańcucha wywołań Zakresy: model wszystko lub nic Elastyczność założenia dotyczącego kolejności wywołań Dostosowywanie: zastąpienie metody Sprzęganie: zastosowanie w mieszaniu klas Dostosowywanie: wymóg takich samych argumentów Podsumowanie funkcji super Pułapki związane z klasami Modyfikacja atrybutów klas może mieć efekty uboczne Modyfikowanie mutowalnych atrybutów klas również może mieć efekty uboczne Dziedziczenie wielokrotne kolejność ma znaczenie Zakresy w metodach i klasach Różne pułapki związane z klasami Rozsądnie wybieraj miejsce przechowywania atrybutu w instancji lub w klasie Zazwyczaj wywołuj konstruktory klasy nadrzędnej Klasy wykorzystujące delegację w 3.x __getattr__ i funkcje wbudowane Przesadne opakowywanie Część VII Wyjątki oraz narzędzia Rozdział 33. Podstawy wyjątków Po co używa się wyjątków Role wyjątków Wyjątki w skrócie Domyślny program obsługi wyjątków Przechwytywanie wyjątków Zgłaszanie wyjątków Wyjątki zdefiniowane przez użytkownika Działania końcowe Rozdział 34. Szczegółowe informacje dotyczące wyjątków Instrukcja try/except/else Jak działa instrukcja try Części instrukcji try Przechwytywanie wybranych i wszystkich wyjątków Przechwytywanie wszystkich wyjątków: pusta instrukcja except i klasa Exception Część try/else Przykład zachowanie domyślne Przykład przechwytywanie wbudowanych wyjątków Instrukcja try/finally Przykład działania kończące kod z użyciem try/finally Połączona instrukcja try/except/finally Składnia połączonej instrukcji try Łączenie finally oraz except za pomocą zagnieżdżania Przykład połączonego try Instrukcja raise Zgłaszanie wyjątków Zakresy widoczności zmiennych w instrukcjach try i except Przekazywanie wyjątków za pomocą raise Łańcuchy wyjątków w Pythonie 3.x raise from Instrukcja assert Przykład wyłapywanie ograniczeń (ale nie błędów!) Menedżery kontekstu with/as Podstawowe zastosowanie Protokół zarządzania kontekstem Kilka menedżerów kontekstu w wersjach 3.1, 2.7 i nowszych Rozdział 35. Obiekty wyjątków Wyjątki powrót do przyszłości Wyjątki oparte na łańcuchach znaków znikają Wyjątki oparte na klasach Tworzenie klas wyjątków Do czego służą hierarchie wyjątków Wbudowane klasy wyjątków Kategorie wbudowanych wyjątków Domyślne wyświetlanie oraz stan Własne sposoby wyświetlania Własne dane oraz zachowania Udostępnianie szczegółów wyjątku Udostępnianie metod wyjątków Rozdział 36. Projektowanie z wykorzystaniem wyjątków Zagnieżdżanie programów obsługi wyjątków Przykład zagnieżdżanie przebiegu sterowania Przykład zagnieżdżanie składniowe Zastosowanie wyjątków Wychodzenie z głęboko zagnieżdżonych pętli: instrukcja go to Wyjątki nie zawsze są błędami Funkcje mogą sygnalizować warunki za pomocą raise Zamykanie plików oraz połączeń z serwerem Debugowanie z wykorzystaniem zewnętrznych instrukcji try Testowanie kodu wewnątrz tego samego procesu Więcej informacji na temat funkcji sys.exc_info Wyświetlanie błędów i śladów stosu Wskazówki i pułapki dotyczące projektowania wyjątków Co powinniśmy opakować w try Jak nie przechwytywać zbyt wiele unikanie pustych except i wyjątków Jak nie przechwytywać zbyt mało korzystanie z kategorii opartych na klasach Podsumowanie podstaw języka Python Zbiór narzędzi Pythona Narzędzia programistyczne przeznaczone do większych projektów Część VIII Zagadnienia zaawansowane Rozdział 37. Łańcuchy znaków Unicode oraz łańcuchy bajtowe Zmiany w łańcuchach znaków w Pythonie 3.x Podstawy łańcuchów znaków Kodowanie znaków Jak Python zapisuje ciągi znaków w pamięci Typy łańcuchów znaków Pythona Po co są stosowane różne typy ciągów? Pliki binarne i tekstowe Podstawy kodowania ciągów znaków Literały tekstowe w Pythonie 3.x Literały Unicode w Pythonie 2.x i 3.3 Literały tekstowe w Pythonie 2.x Konwersje typów ciągów Kod łańcuchów znaków Unicode Kod tekstu z zakresu ASCII Kod tekstu spoza zakresu ASCII Kodowanie i dekodowanie tekstu spoza zakresu ASCII Inne techniki kodowania łańcuchów Unicode Literały bajtowe Konwersja kodowania Łańcuchy znaków Unicode w Pythonie 2.x Mieszanie typów ciągów w wersji 2.x Deklaracje typu kodowania znaków pliku źródłowego Wykorzystywanie obiektów bytes z Pythona 3.x Wywołania metod Operacje na sekwencjach Inne sposoby tworzenia obiektów bytes Mieszanie typów łańcuchów znaków Obiekt bytearray w wersji 3.x (oraz 2.6 lub nowszej) Typ bytearray w akcji Podsumowanie typów ciągów znaków w Pythonie 3.x Wykorzystywanie plików tekstowych i binarnych Podstawy plików tekstowych Tryby tekstowy i binarny w Pythonie 2.x i 3.x Brak dopasowania typu i zawartości w Pythonie 3.x Wykorzystywanie plików Unicode Odczyt i zapis Unicode w Pythonie 3.x Kodowanie ręczne Kodowanie danych wyjściowych pliku Dekodowanie danych wejściowych pliku Dekodowanie błędnych dopasowań Obsługa BOM w Pythonie 3.x Pomijanie znacznika BOM w Notatniku Pomijanie znacznika BOM w Pythonie Pliki Unicode w Pythonie 2.x Unicode w nazwach plików i w strumieniach Nazwy plików: znaki i bajty Zawartość strumienia: zmienna PYTHONIOENCODING Inne zmiany w narzędziach do przetwarzania łańcuchów znaków w Pythonie 3.x Moduł dopasowywania wzorców re Moduł danych binarnych struct Moduł serializacji obiektów pickle Narzędzia do analizy składniowej XML Rozdział 38. Zarządzane atrybuty Po co zarządza się atrybutami Wstawianie kodu wykonywanego w momencie dostępu do atrybutów Właściwości Podstawy Pierwszy przykład Obliczanie atrybutów Zapisywanie właściwości w kodzie za pomocą dekoratorów Dekoratory setter i deleter Deskryptory Podstawy Argumenty metod deskryptorów Deskryptory tylko do odczytu Pierwszy przykład Obliczone atrybuty Wykorzystywanie informacji o stanie w deskryptorach Powiązania pomiędzy właściwościami a deskryptorami Deskryptory, sloty i nie tylko Metody __getattr__ oraz __getattribute__ Podstawy Unikanie pętli w metodach przechwytujących atrybuty Pierwszy przykład Metoda __getattribute__ Obliczanie atrybutów Metoda __getattribute__ Porównanie metod __getattr__ oraz __getattribute__ Porównanie technik zarządzania atrybutami Przechwytywanie atrybutów wbudowanych operacji Powrót do menedżerów opartych na delegacji Przykład sprawdzanie poprawności atrybutów Wykorzystywanie właściwości do sprawdzania poprawności Testowanie kodu Wykorzystywanie deskryptorów do sprawdzania poprawności Opcja 1: sprawdzanie z wykorzystaniem współdzielonego stanu deskryptora instancji Opcja 2: sprawdzanie z wykorzystaniem indywidualnego stanu instancji Wykorzystywanie metody __getattr__ do sprawdzania poprawności Wykorzystywanie metody __getattribute__ do sprawdzania poprawności Rozdział 39. Dekoratory Czym jest dekorator Zarządzanie wywołaniami oraz instancjami Zarządzanie funkcjami oraz klasami Wykorzystywanie i definiowanie dekoratorów Do czego służą dekoratory Podstawy Dekoratory funkcji Zastosowanie Implementacja Obsługa dekoracji metod Dekoratory klas Zastosowanie Implementacja Obsługa większej liczby instancji Zagnieżdżanie dekoratorów Argumenty dekoratorów Dekoratory zarządzają także funkcjami oraz klasami Kod dekoratorów funkcji Śledzenie wywołań Możliwości w zakresie zachowania informacji o stanie Atrybuty instancji klasy Zakresy zawierające oraz zmienne globalne Zakresy funkcji zawierających oraz zmienne nielokalne Atrybuty funkcji Uwagi na temat klas I dekorowanie metod klas Wykorzystywanie zagnieżdżonych funkcji do dekoracji metod Wykorzystywanie deskryptorów do dekorowania metod Mierzenie czasu wywołania Dekoratory a pomiar czasu wywołania Niuanse pomiaru czasu Dodawanie argumentów dekoratora Pomiar czasu z użyciem argumentów dekoratora Kod dekoratorów klas Klasy singletona Alternatywne rozwiązania Śledzenie interfejsów obiektów Śledzenie interfejsów za pomocą dekoratorów klas Stosowanie dekoratorów klas z wbudowanymi typami Uwagi na temat klas II zachowanie większej liczby instancji Dekoratory a funkcje zarządzające Do czego służą dekoratory (raz jeszcze) Bezpośrednie zarządzanie funkcjami oraz klasami Przykład atrybuty prywatne i publiczne Implementacja atrybutów prywatnych Szczegóły implementacji I Dziedziczenie a delegacja Argumenty dekoratora Zachowywanie stanu i zakresy funkcji zawierającej Wykorzystanie __dict__ oraz __slots__ (i innych nazw wirtualnych) Uogólnienie kodu pod kątem deklaracji atrybutów jako publicznych Szczegóły implementacji II Użycie nazw pseudoprywatnych __X Złamanie prywatności Kompromisy związane z dekoratorem Znane problemy Ograniczenie: delegacja metod przeciążania operatorów kończy się niepowodzeniem w Pythonie 3.x Sposoby redefiniowania metod przeciążających operatory w wersji 3.x Definicja śródwierszowa Nadrzędne klasy mieszane Warianty kodowania: routery, deskryptory, automatyzacja Czy metody operatorów należy weryfikować? Alternatywy implementacyjne: wstawianie __getattribute__, inspekcja stosu wywołań W Pythonie nie chodzi o kontrolę Przykład sprawdzanie poprawności argumentów funkcji Cel Prosty dekorator sprawdzający przedziały dla argumentów pozycyjnych Uogólnienie kodu pod kątem słów kluczowych i wartości domyślnych Szczegóły implementacji Dalsza introspekcja Założenia dotyczące argumentów Algorytm dopasowywania Znane problemy Niepoprawne wywołania Dowolne argumenty Zagnieżdżone dekoratory Argumenty dekoratora a adnotacje funkcji Inne zastosowania sprawdzanie typów (skoro nalegamy!) Rozdział 40. Metaklasy Tworzyć metaklasy czy tego nie robić? Zwiększające się poziomy magii Język pełen haczyków Wady funkcji pomocniczych Metaklasy a dekoratory klas runda 1. Model metaklasy Klasy są instancjami obiektu type Metaklasy są klasami podrzędnymi klasy type Protokół instrukcji class Deklarowanie metaklas Deklarowanie w wersji 3.x Deklarowanie w wersji 2.x Kierowanie metaklas w wersjach 3.x i 2.x Tworzenie metaklas Prosta metaklasa Dostosowywanie tworzenia do własnych potrzeb oraz inicjalizacja Pozostałe sposoby tworzenia metaklas Użycie prostych funkcji fabrycznych Przeciążenie wywołań tworzących klasę za pomocą zwykłych klas Przeciążenie wywołań tworzących klasę za pomocą metaklas Instancje a dziedziczenie Metaklasa a klasa nadrzędna Dziedziczenie: pełna historia Algorytm dziedziczenia w Pythonie: wersja prosta Specjalny przypadek deskryptorów Algorytm dziedziczenia w Pythonie: wersja nieco pełniejsza Dziedziczenie przypisań atrybutów Specjalny przypadek wbudowanych operacji Metody metaklas Metody metaklasy a metody klasy Przeciążanie operatorów w metodach metaklasy Przykład dodawanie metod do klas Ręczne rozszerzanie Rozszerzanie oparte na metaklasie Metaklasy a dekoratory klas runda 2. Rozszerzenie oparte na dekoratorach Zarządzanie instancjami zamiast klasami Metaklasa równoważna dekoratorowi klasy? Przykład zastosowanie dekoratorów do metod Ręczne śledzenie za pomocą dekoracji Śledzenie za pomocą metaklas oraz dekoratorów Zastosowanie dowolnego dekoratora do metod Metaklasy a dekoratory klas runda 3. (i ostatnia) Rozdział 41. Wszystko, co najlepsze Paradoks Pythona Opcjonalne cechy języka Przeciwko niepokojącym usprawnieniom Złożoność a siła Prostota a elitarność Końcowe wnioski Dokąd dalej? Na bis: wydrukuj swój certyfikat! Dodatki Dodatek A Instalacja i konfiguracja Instalowanie interpretera Pythona Czy Python jest już zainstalowany? Skąd pobrać Pythona Instalacja Pythona Konfiguracja Pythona Zmienne środowiskowe Pythona Jak ustawić opcje konfiguracyjne? Zmienne powłoki systemu Unix i Linux Zmienne DOS (system Windows) Graficzny interfejs użytkownika zmiennych środowiskowych Windows Rejestr systemu Windows Pliki ścieżek Opcje wiersza poleceń Pythona Uruchamianie skryptów z argumentami Uruchamianie kodu podanego w argumentach i pobranego ze standardowego wejścia Uruchamianie modułów umieszczonych w ścieżce wyszukiwania Tryby zoptymalizowany i niebuforowany Tryb interaktywny po wykonaniu skryptu Argumenty wiersza poleceń w Pythonie w.x Uruchamianie Pythona 3.3 za pomocą wiersza poleceń Windows Uzyskanie pomocy Dodatek B Uruchamianie Pythona 3.x w systemie Windows Dziedzictwo systemu Unix Dziedzictwo systemu Windows Wprowadzenie nowego programu uruchomieniowego w systemie Windows Podręcznik do programu uruchomieniowego Krok 1: dyrektywa wersji w pliku Krok 2: parametry w wierszu poleceń Krok 3: stosowanie i zmienianie ustawień domyślnych Pułapki nowego programu uruchomieniowego Pułapka 1: nierozpoznany w Uniksie wiersz #! uniemożliwia uruchomienie skryptu Wpływ zmian na przykłady użyte w książce i korekta Pułapka 2: domyślna wersja 2.x w programie uruchomieniowym Wpływ zmian na przykłady w książce i korekta Pułapka 3: nowa opcja modyfikacji zmiennej PATH Podsumowanie: ostateczny wynik dla systemu Windows Dodatek C Zmiany w języku Python a niniejsza książka Najważniejsze różnice między wersjami 2.x i 3.x Zmiany w wersji 3.x Rozszerzenia dostępne tylko w wersji 3.x Ogólne uwagi do zmian w wersji 3.x Zmiany w bibliotekach i narzędziach Zmiany w standardowej bibliotece Zmiany w narzędziach Migracja do wersji 3.x Zmiany opisane w piątym wydaniu: wersje 2.7, 3.2 i 3.3 Zmiany w wersji 2.7 Zmiany w wersji 3.3 Zmiany w wersji 3.2 Zmiany opisane w czwartym wydaniu: wersje 2.6, 3.0 i 3.1 Zmiany w wersji 3.1 Zmiany w wersjach 3.0 i 2.6 Niektóre elementy języka usunięte w Pythonie 3.0 Zmiany opisane w trzecim wydaniu: wersje 2.3, 2.4 i 2.5 Wcześniejsze i późniejsze zmiany w Pythonie Dodatek D Rozwiązania ćwiczeń podsumowujących poszczególne części książki Część I Wprowadzenie Część II Typy i operacje Część III Instrukcja i składnia Część IV Funkcje i generatory Część V Moduły i pakiety Część VI Klasy i programowanie zorientowane obiektowo Część VII Wyjątki oraz narzędzia
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 149860 N (1 egz.)
Książka
W koszyku
Wydanie 5. odnosi się do oryginału. W książce także ISBN oryginału.
Python 2.x i 3.x kiedyś Python 2.x i 3.x obecnie Omawiamy zarówno wersję 2.x, jak i 3.x Której wersji Pythona powinienem użyć? Rozdział 1. Pytania i odpowiedzi dotyczące Pythona Dlaczego ludzie używają Pythona? Jakość oprogramowania Wydajność programistów Czy Python jest językiem skryptowym? Jakie są wady języka Python? Kto dzisiaj używa Pythona? Co mogę zrobić za pomocą Pythona? Programowanie systemowe Graficzne interfejsy użytkownika (GUI) Skrypty internetowe Integracja komponentów Programowanie bazodanowe Szybkie prototypowanie Programowanie numeryczne i naukowe I dalej: gry, przetwarzanie obrazu, wyszukiwanie danych, robotyka, Excel Jak Python jest rozwijany i wspierany? Kompromisy związane z modelem open source Jakie są techniczne mocne strony Pythona? Jest zorientowany obiektowo i funkcyjny Jest darmowy Jest przenośny Ma duże możliwości Można go łączyć z innymi językami Jest względnie łatwy w użyciu Jest względnie łatwy do nauczenia się Zawdzięcza swoją nazwę Monty Pythonowi Jak Python wygląda na tle innych języków? Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Rozdział 2. Jak Python wykonuje programy? Wprowadzenie do interpretera Pythona Wykonywanie programu Z punktu widzenia programisty Z punktu widzenia Pythona Kompilacja kodu bajtowego Maszyna wirtualna Pythona Wpływ na wydajność Wpływ na proces programowania Warianty modeli wykonywania Alternatywne implementacje Pythona CPython standard Jython Python dla języka Java IronPython Python dla .NET Stackless: Python dla programowania współbieżnego PyPy Python dla szybkości i wydajności Narzędzia do optymalizacji działania programu Cython: hybryda Pythona/C Shed Skin: translator języka Python na C ++ Psyco oryginalny kompilator JIT Zamrożone pliki binarne Rozdział 3. Jak wykonuje się programy? Interaktywny wiersz poleceń Uruchamianie sesji interaktywnej Ścieżka systemowa Nowe opcje systemu Windows w wersji 3.3: PATH, Launcher Gdzie zapisywać programy katalogi z kodem źródłowym Czego nie wpisywać znaki zachęty i komentarze Interaktywne wykonywanie kodu Do czego służy sesja interaktywna Eksperymentowanie Testowanie Uwagi praktyczne wykorzystywanie sesji interaktywnej Wpisywanie instrukcji wielowierszowych Systemowy wiersz poleceń i pliki źródłowe Pierwszy skrypt Wykonywanie plików z poziomu wiersza poleceń powłoki Sposoby użycia wiersza poleceń Uwagi praktyczne wykorzystywanie wierszy poleceń i plików Skrypty wykonywalne w stylu uniksowym #! Podstawy skryptów uniksowych Sztuczka z wyszukiwaniem programu przy użyciu polecenia env w systemie Unix Python 3.3 launcher #! w systemie Windows Klikanie ikon plików Podstawowe zagadnienia związane z klikaniem ikon plików Kliknięcie ikony w systemie Windows Sztuczka z funkcją input Inne ograniczenia programów uruchamianych kliknięciem ikony Importowanie i przeładowywanie modułów Podstawy importowania i przeładowywania modułów Więcej o modułach atrybuty Moduły i przestrzenie nazw Uwagi praktyczne instrukcje import i reload Wykorzystywanie funkcji exec do wykonywania plików modułów Interfejs użytkownika środowiska IDLE Szczegóły uruchamiania środowiska IDLE Podstawy środowiska IDLE Wybrane funkcje środowiska IDLE Zaawansowane narzędzia środowiska IDLE Uwagi praktyczne korzystanie ze środowiska IDLE Inne środowiska IDE Inne opcje wykonywania kodu Osadzanie wywołań Zamrożone binarne pliki wykonywalne Uruchamianie kodu z poziomu edytora tekstu Jeszcze inne możliwości uruchamiania Część II Typy i operacje Rozdział 4. Wprowadzenie do typów obiektów Pythona Hierarchia pojęć w Pythonie Dlaczego korzystamy z typów wbudowanych Najważniejsze typy danych w Pythonie Liczby Łańcuchy znaków Operacje na sekwencjach Niezmienność Metody specyficzne dla typu Uzyskiwanie pomocy Inne sposoby kodowania łańcuchów znaków Ciągi znaków w formacie Unicode Dopasowywanie wzorców Listy Operacje na typach sekwencyjnych Operacje specyficzne dla typu Sprawdzanie granic Zagnieżdżanie Listy składane Słowniki Operacje na odwzorowaniach Zagnieżdżanie raz jeszcze Brakujące klucze testowanie za pomocą if Sortowanie kluczy pętle for Iteracja i optymalizacja Krotki Do czego służą krotki Pliki Pliki binarne Pliki tekstowe Unicode Inne narzędzia podobne do plików Inne typy podstawowe Jak zepsuć elastyczność kodu Klasy definiowane przez użytkownika Rozdział 5. Typy liczbowe Podstawy typów liczbowych Pythona Literały liczbowe Wbudowane narzędzia liczbowe Operatory wyrażeń Pythona Połączone operatory stosują się do priorytetów Podwyrażenia grupowane są w nawiasach Pomieszane typy poddawane są konwersji Wprowadzenie: przeciążanie operatorów i polimorfizm Liczby w akcji Zmienne i podstawowe wyrażenia Formaty wyświetlania liczb Porównania zwykłe i łączone Dzielenie klasyczne, bez reszty i prawdziwe Obsługa różnych wersji Pythona Dzielenie bez reszty a odcinanie Dlaczego odcinanie ma znaczenie? Precyzja liczb całkowitych Liczby zespolone Notacja szesnastkowa, ósemkowa i dwójkowa literały i konwersje Operacje na poziomie bitów Inne wbudowane narzędzia numeryczne Inne typy liczbowe Typ Decimal (liczby dziesiętne) Typ Decimal zagadnienia podstawowe Globalne ustawianie precyzji liczb dziesiętnych Menedżer kontekstu dziesiętnego Typ Fraction (liczby ułamkowe) Typ Fraction zagadnienia podstawowe Dokładność numeryczna ułamków zwykłych i dziesiętnych Konwersje ułamków i typy mieszane Zbiory Podstawy zbiorów w Pythonie 2.6 i wersjach wcześniejszych Literały zbiorów w Pythonie 3.x i 2.7 Ograniczenia na obiekty niemutowalne i zbiory zamrożone Zbiory składane w Pythonie 3.x i 2.7 Dlaczego zbiory? Wartości Boolean Rozszerzenia numeryczne Rozdział 6. Wprowadzenie do typów dynamicznych Sprawa brakujących deklaracji typu Zmienne, obiekty i referencje Typy powiązane są z obiektami, a nie ze zmiennymi Obiekty są uwalniane Referencje współdzielone Referencje współdzielone a modyfikacje w miejscu Referencje współdzielone a równość Typy dynamiczne są wszędzie Rozdział 7. Łańcuchy znaków Co znajdziesz w tym rozdziale Unicode krótka historia Łańcuchy znaków podstawy Literały łańcuchów znaków Łańcuchy znaków w apostrofach i cudzysłowach są tym samym Sekwencje ucieczki reprezentują znaki specjalne Surowe łańcuchy znaków blokują sekwencje ucieczki Potrójne cudzysłowy i apostrofy kodują łańcuchy znaków będące wielowierszowymi blokami Łańcuchy znaków w akcji Podstawowe operacje Indeksowanie i wycinki Rozszerzone wycinki trzeci limit i obiekty wycinków Narzędzia do konwersji łańcuchów znaków Konwersje kodu znaków Modyfikowanie łańcuchów znaków Metody łańcuchów znaków Składnia wywoływania metod Metody typów znakowych Przykłady metod łańcuchów znaków modyfikowanie Przykłady metod łańcuchów znaków analiza składniowa tekstu Inne często używane metody łańcuchów znaków Oryginalny moduł string (usunięty w wersji 3.0) Wyrażenia formatujące łańcuchy znaków Formatowanie łańcuchów tekstu z użyciem wyrażeń formatujących podstawy Składnia zaawansowanych wyrażeń formatujących Przykłady zaawansowanych wyrażeń formatujących Wyrażenia formatujące oparte na słowniku Formatowanie łańcuchów z użyciem metody format Używanie kluczy, atrybutów i przesunięć Zaawansowana składnia wywołań metody format Przykłady zaawansowanego formatowania łańcuchów znaków z użyciem metody format Porównanie metody format z wyrażeniami formatującymi Dlaczego miałbyś korzystać z metody format Dodatkowe możliwości: wbudowane funkcje czy ogólne techniki programowania Elastyczna składnia odwołań: dodatkowa złożoność i nakładanie się funkcjonalności Jawne odwołania do wartości: teraz opcjonalne i prawdopodobnie nie będą używane Nazwy metod i argumenty neutralne kontekstowo estetyka kodu kontra zastosowania praktyczne Funkcje a wyrażenia: niewielka wygoda Generalne kategorie typów Typy z jednej kategorii współdzielą zbiory operacji Typy mutowalne można modyfikować w miejscu Rozdział 8. Listy oraz słowniki Listy Listy w akcji Podstawowe operacje na listach Iteracje po listach i składanie list Indeksowanie, wycinki i macierze Modyfikacja list w miejscu Przypisywanie do indeksu i wycinków Wywołania metod list Kilka słów o sortowaniu list Inne, często stosowane metody list Inne popularne operacje na listach Słowniki Słowniki w akcji Podstawowe operacje na słownikach Modyfikacja słowników w miejscu Inne metody słowników Przykład baza danych o filmach Przykład mapowanie wartości na klucze Uwagi na temat korzystania ze słowników Wykorzystywanie słowników do symulowania elastycznych list liczby całkowite jako klucze Wykorzystywanie słowników z rzadkimi strukturami danych krotki jako klucze Unikanie błędów z brakującymi kluczami Zagnieżdżanie słowników Inne sposoby tworzenia słowników Zmiany dotyczące słowników w Pythonie 3.x i 2.7 Słowniki składane w wersjach 3.x i 2.7 Widoki słowników w wersji 3.x (oraz wersji 2.7 przy użyciu nowych metod) Widoki słowników i zbiory Sortowanie kluczy słowników w wersji 3.x Porównywanie rozmiarów słowników nie działa w 3.x W wersji 3.x metoda has_key nie istnieje, niech żyje in! Rozdział 9. Krotki, pliki i wszystko inne Krotki Krotki w akcji Właściwości składni krotek przecinki i nawiasy Konwersje, metody oraz niemutowalność Dlaczego istnieją listy i krotki Repetytorium: rekordy krotki nazwane Pliki Otwieranie plików Wykorzystywanie plików Pliki w akcji Pliki tekstowe i binarne krótka historia Przechowywanie obiektów Pythona w plikach i przetwarzanie ich Przechowywanie natywnych obiektów Pythona moduł pickle Przechowywanie obiektów Pythona w formacie JSON Przechowywanie spakowanych danych binarnych moduł struct Menedżery kontekstu plików Inne narzędzia powiązane z plikami Przegląd i podsumowanie podstawowych typów obiektów Elastyczność obiektów Referencje a kopie Porównania, testy równości i prawda Porównywania i sortowania typów mieszanych w Pythonie 2.x i 3.x Porównywanie słowników w Pythonie 2.x i 3.x Prawda czy fałsz, czyli znaczenie True i False w Pythonie Obiekt None Typ bool Hierarchie typów Pythona Obiekty typów Inne typy w Pythonie Pułapki typów wbudowanych Przypisanie tworzy referencje, nie kopie Powtórzenie dodaje jeden poziom zagłębienia Uwaga na cykliczne struktury danych Typów niemutowalnych nie można modyfikować w miejscu Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Sprawdź swoją wiedzę ćwiczenia do części drugiej Część III Instrukcje i składnia Rozdział 10. Wprowadzenie do instrukcji Pythona Raz jeszcze o hierarchii pojęciowej języka Python Instrukcje Pythona Historia dwóch if Co dodaje Python Co usuwa Python Nawiasy są opcjonalne Koniec wiersza jest końcem instrukcji Koniec wcięcia to koniec bloku Skąd bierze się składnia z użyciem wcięć Kilka przypadków specjalnych Przypadki specjalne dla reguły o końcu wiersza Przypadki specjalne dla reguły o wcięciach bloków Szybki przykład interaktywne pętle Prosta pętla interaktywna Wykonywanie obliczeń na danych wpisywanych przez użytkownika Obsługa błędów poprzez sprawdzanie danych wejściowych Obsługa błędów za pomocą instrukcji try Obsługa liczb zmiennoprzecinkowych Kod zagnieżdżony na trzy poziomy głębokości Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Rozdział 11. Przypisania, wyrażenia i wyświetlanie Instrukcje przypisania Formy instrukcji przypisania Przypisanie sekwencji Zaawansowane wzorce przypisywania sekwencji Rozszerzona składnia rozpakowania sekwencji w Pythonie 3.x Rozszerzona składania rozpakowania w działaniu Przypadki brzegowe Wygodny gadżet Zastosowanie w pętli for Przypisanie z wieloma celami Przypisanie z wieloma celami a współdzielone referencje Przypisania rozszerzone Przypisania rozszerzone a współdzielone referencje Reguły dotyczące nazw zmiennych Konwencje dotyczące nazewnictwa Nazwy nie mają typu, ale obiekty tak Instrukcje wyrażeń Instrukcje wyrażeń i modyfikacje w miejscu Polecenia print Funkcja print z Pythona 3.x Format wywołania Funkcja print z wersji 3.x w działaniu Instrukcja print w Pythonie 2.x Formy instrukcji Instrukcja print Pythona 2.x w działaniu Przekierowanie strumienia wyjściowego Program Witaj, świecie! Ręczne przekierowanie strumienia wyjścia Automatyczne przekierowanie strumienia Wyświetlanie niezależne od wersji Konwerter 2to3 Neutralizacja różnic w wyświetlaniu za pomocą kodu Rozdział 12. Testy if i reguły składni Instrukcje if Ogólny format Proste przykłady Rozgałęzienia kodu Obsługa domyślnych wartości wyboru Obsługa bardziej złożonych operacji Reguły składni Pythona raz jeszcze Ograniczniki bloków reguły tworzenia wcięć Unikaj mieszania tabulatorów i spacji nowa opcja sprawdzania błędów w Pythonie 3.x Ograniczniki instrukcji wiersze i znaki kontynuacji Kilka przypadków specjalnych Testy prawdziwości i testy logiczne Wyrażenie trójargumentowe if/else Rozdział 13. Pętle while i for Pętle while Ogólny format Przykłady Instrukcje break, continue, pass oraz else w pętli Ogólny format pętli Instrukcja pass Instrukcja continue Instrukcja break Klauzula else pętli Więcej o części pętli else Pętle for Ogólny format Przykłady Podstawowe zastosowanie Inne typy danych Przypisanie krotek w pętli for Rozszerzone przypisanie sekwencji w pętlach for w Pythonie 3.x Zagnieżdżone pętle for Techniki tworzenia pętli Pętle z licznikami range Skanowanie sekwencji pętla while z funkcją range kontra pętla for Przetasowania sekwencji funkcje range i len Przechodzenie niewyczerpujące range kontra wycinki Modyfikowanie list range kontra listy składane Przechodzenie równoległe zip oraz map Równoznaczność funkcji map w Pythonie 2.x Tworzenie słowników za pomocą funkcji zip Generowanie wartości przesunięcia i elementów enumerate Rozdział 14. Iteracje i listy składane Iteracje pierwsze spojrzenie Protokół iteracyjny iteratory plików Iterowanie ręczne iter i next Pełny protokół iteracji Iteracje ręczne Inne wbudowane typy iterowalne Listy składane wprowadzenie Podstawy list składanych Wykorzystywanie list składanych w plikach Rozszerzona składnia list składanych Klauzula filtrująca: if Zagnieżdżone pętle: klauzula for Inne konteksty iteracyjne Nowe obiekty iterowalne w Pythonie 3.x Wpływ na kod w wersji 2.x zalety i wady Obiekt iterowalny range Obiekty iterowalne map, zip i filter Iteratory wielokrotne kontra pojedyncze Obiekty iterowalne widoki słownika Inne zagadnienia związane z iteracjami Rozdział 15. Wprowadzenie do dokumentacji Źródła dokumentacji Pythona Komentarze ze znakami # Funkcja dir Notki dokumentacyjne doc Notki dokumentacyjne zdefiniowane przez użytkownika Standardy i priorytety notek dokumentacyjnych Wbudowane notki dokumentacyjne PyDoc funkcja help PyDoc raporty HTML Python 3.2 i nowsze wersje: tryb PyDoc dla wszystkich przeglądarek Python 3.2 i wersje wcześniejsze: klient GUI Nie tylko notki docstrings pakiet Sphinx Zbiór standardowej dokumentacji Zasoby internetowe Publikowane książki Często spotykane problemy programistyczne Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Sprawdź swoją wiedzę ćwiczenia do części trzeciej Część IV Funkcje i generatory Rozdział 16. Podstawy funkcji Dlaczego używamy funkcji Tworzenie funkcji Instrukcje def Instrukcja def uruchamiana jest w czasie wykonania Pierwszy przykład definicje i wywoływanie Definicja Wywołanie Polimorfizm w Pythonie Drugi przykład przecinające się sekwencje Definicja Wywołania Raz jeszcze o polimorfizmie Zmienne lokalne Rozdział 17. Zasięgi Podstawy zasięgów w Pythonie Reguły dotyczące zasięgów Rozwiązywanie nazw reguła LEGB Inne zasięgi Pythona przegląd Przykład zasięgu Zasięg wbudowany Przedefiniowanie wbudowanych nazw: lepiej czy gorzej? Instrukcja global Projektowanie programów: minimalizowanie stosowania zmiennych globalnych Projektowanie programów: minimalizowanie modyfikacji dokonywanych pomiędzy plikami Inne metody dostępu do zmiennych globalnych Zasięgi a funkcje zagnieżdżone Szczegóły dotyczące zasięgów zagnieżdżonych Przykłady zasięgów zagnieżdżonych Funkcje fabrykujące: domknięcia Proste funkcje fabrykujące Funkcje fabrykujące kontra klasy, runda pierwsza Zachowywanie stanu zasięgu zawierającego za pomocą argumentów domyślnych Zasięgi zagnieżdżone, wartości domyślne i wyrażenia lambda Zmienne pętli mogą wymagać wartości domyślnych, a nie zasięgów Dowolne zagnieżdżanie zasięgów Instrukcja nonlocal w Pythonie 3.x Podstawy instrukcji nonlocal Instrukcja nonlocal w akcji Użycie zmiennych nielokalnych w celu modyfikacji Przypadki graniczne Czemu służą zmienne nonlocal? Opcje zachowania stanu Zachowanie stanu: zmienne nonlocal (tylko w wersji 3.x) Zachowanie stanu: zmienne globalne tylko jedna kopia Zachowanie stanu: klasy jawne atrybuty (wprowadzenie) Zachowanie stanu: atrybuty funkcji (w wersjach 3.x i 2.x) Zachowanie stanu: obiekty mutowalne duchy przeszłości języka Pyton? Rozdział 18. Argumenty Podstawy przekazywania argumentów Argumenty a współdzielone referencje Unikanie modyfikacji argumentów mutowalnych Symulowanie parametrów wyjścia i wielu wyników działania Specjalne tryby dopasowywania argumentów Podstawy dopasowywania argumentów Składnia dopasowania argumentów Dopasowywanie argumentów szczegóły Przykłady ze słowami kluczowymi i wartościami domyślnymi Słowa kluczowe Wartości domyślne Łączenie słów kluczowych i wartości domyślnych Przykłady dowolnych argumentów Nagłówki: zbieranie argumentów Wywołania: rozpakowywanie argumentów Ogólne zastosowanie funkcji Zlikwidowana wbudowana funkcja apply (Python 2.x) Argumenty tylko ze słowami kluczowymi (z Pythona 3.x) Reguły dotyczące kolejności Czemu służą argumenty ze słowami kluczowymi? Przykład z funkcją obliczającą minimum Pełne rozwiązanie Dodatkowy bonus Puenta Uogólnione funkcje działające na zbiorach Emulacja funkcji print z Pythona 3.0 Wykorzystywanie argumentów ze słowami kluczowymi Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Rozdział 19. Zaawansowane zagadnienia dotyczące funkcji Koncepcje projektowania funkcji Funkcje rekurencyjne Sumowanie z użyciem rekurencji Implementacje alternatywne Pętle a rekurencja Obsługa dowolnych struktur Rekurencja kontra kolejki i stosy Cykle, ścieżki i ograniczenia stosu Więcej przykładów rekurencji Obiekty funkcji atrybuty i adnotacje Pośrednie wywołania funkcji obiekty pierwszej klasy Introspekcja funkcji Atrybuty funkcji Adnotacje funkcji w Pythonie 3.x Funkcje anonimowe lambda Podstawy wyrażeń lambda Po co używamy wyrażeń lambda Wielotorowe rozgałęzienia kodu finał Jak (nie) zaciemniać kodu napisanego w Pythonie Zasięgi: wyrażenia lambda również można zagnieżdżać Narzędzia programowania funkcyjnego Odwzorowywanie funkcji na obiekty iterowalne map Wybieranie elementów obiektów iterowalnych funkcja filter Łączenie elementów obiektów iterowalnych funkcja reduce Rozdział 20. Listy składane i generatory Listy składane i narzędzia funkcyjne Listy składane kontra funkcja map Dodajemy warunki i pętle zagnieżdżone filter Formalna składnia list składanych Przykład listy składane i macierze Nie nadużywaj list składanych: reguła KISS Druga strona medalu: wydajność, zwięzłość, ekspresyjność Funkcje i wyrażenia generatorów Funkcje generatorów yield kontra return Zawieszanie stanu Integracja protokołu iteracji Funkcje generatorów w działaniu Dlaczego funkcje generatorów? Rozszerzony protokół funkcji generatorów send kontra next Wyrażenia generatorów obiekty iterowalne spotykają złożenia Dlaczego wyrażenia generatora? Wyrażenia generatora a funkcja map Wyrażenia generatora a filtry Funkcje generatorów a wyrażenia generatorów Generatory są obiektami o jednoprzebiegowej iteracji Generowanie wyników we wbudowanych typach, narzędziach i klasach Generatory i narzędzia biblioteczne: skanery katalogów Generatory i funkcje aplikacji Przegląd: obiekty iterowalne definiowane przez użytkownika w klasach Przykład generowanie mieszanych sekwencji Sekwencje mieszające Proste funkcje Funkcje generatora Wyrażenia generatora Funkcja tester Permutacje: wszystkie możliwe kombinacje Nie nadużywaj generatorów: reguła EIBTI Inne spojrzenie: miejsce i czas, zwięzłość, ekspresyjność Przykład emulowanie funkcji zip i map za pomocą narzędzi iteracyjnych Tworzymy własną implementację funkcji map Własna wersja funkcji zip(...) i map(None, ...) Podsumowanie obiektów składanych Zakresy i zmienne składane Zrozumieć zbiory i słowniki składane Rozszerzona składnia zbiorów i słowników składanych Rozdział 21. Wprowadzenie do pomiarów wydajności Pomiary wydajności iteracji Moduł pomiaru czasu domowej roboty Skrypt mierzący wydajność Wyniki pomiarów czasu Wpływ wywołań funkcji: map Inne rozwiązania dla modułu do pomiaru czasu Użycie argumentów ze słowami kluczowymi w wersji 3.x Inne sugestie Mierzenie czasu iteracji z wykorzystaniem modułu timeit Podstawowe reguły korzystania z modułu timeit Interaktywne użycie i wywołania API Korzystanie z poziomu wiersza polecenia Mierzenie czasu działania instrukcji wielowierszowych Inne tryby użytkowania: instalacje, podsumowania i obiekty Moduł i skrypt testujący z użyciem modułu timeit Wyniki działania skryptu testującego Jeszcze trochę zabawy z mierzeniem wydajności Wygrana funkcji map i rzadka porażka PyPy Jeszcze kilka słów o wpływie wywołań funkcji Techniki porównywania własne funkcje kontra moduł timeit Możliwości ulepszenia kod instalacyjny Inne zagadnienia związane z mierzeniem szybkości działania kodu test pystone Pułapki związane z funkcjami Lokalne nazwy są wykrywane w sposób statyczny Wartości domyślne i obiekty mutowalne Funkcje, które nie zwracają wyników Różne problemy związane z funkcjami Otaczanie zasięgów i zmiennych pętli: funkcje fabrykujące Ukrywanie wbudowanych funkcji przez przypisania: cieniowanie Część V Moduły i pakiety Rozdział 22. Moduły wprowadzenie Dlaczego używamy modułów Architektura programu w Pythonie Struktura programu Importowanie i atrybuty Moduły biblioteki standardowej Jak działa importowanie 1. Odszukanie modułu 2. Kompilowanie (o ile jest to potrzebne) 3. Wykonanie Pliki kodu bajtowego pycache w Pythonie 3.2+ Modele plików kodu bajtowego w akcji Ścieżka wyszukiwania modułów Konfigurowanie ścieżki wyszukiwania Wariacje ścieżki wyszukiwania modułów Lista sys.path Wybór pliku modułu Kody źródłowe modułów Priorytety wyboru Importowanie punktów zaczepienia i plików ZIP Pliki zoptymalizowanego kodu bajtowego Rozdział 23. Podstawy tworzenia modułów Tworzenie modułów Nazwy modułów Inne rodzaje modułów Używanie modułów Instrukcja import Instrukcja from Instrukcja from * Operacja importowania jest przeprowadzana tylko raz Kod inicjalizujący Instrukcje import oraz from są przypisaniami Modyfikowanie elementów mutowalnych w modułach Modyfikowanie nazw pomiędzy plikami Równoważność instrukcji import oraz from Potencjalne pułapki związane z użyciem instrukcji from Kiedy wymagane jest stosowanie instrukcji import Przestrzenie nazw modułów Pliki generują przestrzenie nazw Słowniki przestrzeni nazw: dict Kwalifikowanie nazw atrybutów Importowanie a zasięgi Zagnieżdżanie przestrzeni nazw Przeładowywanie modułów Podstawy przeładowywania modułów Przykład przeładowywania z użyciem reload Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Rozdział 24. Pakiety modułów Podstawy importowania pakietów Pakiety a ustawienia ścieżki wyszukiwania Role pliku inicjalizacji pakietu Przykład importowania pakietu Instrukcja from a instrukcja import w importowaniu pakietów Do czego służy importowanie pakietów Historia trzech systemów Względne importowanie pakietów Zmiany w Pythonie 3.0 Podstawy importowania względnego Do czego służą importy względne Importowanie względne w wersji 3.x Względne importy a bezwzględne ścieżki pakietów Zasięg importów względnych Podsumowanie reguł wyszukiwania modułów Importy względne w działaniu Importowanie spoza pakietów Importy wewnątrz pakietów Importy są nadal względne w stosunku do bieżącego katalogu roboczego Użycie importów względnych i bezwzględnych Importy względne przeszukują tylko pakiety Importy są nadal względne w stosunku do katalogu roboczego (cd.) Pułapki związane z importem względnym w pakietach: zastosowania mieszane Problem Rozwiązanie nr 1: podkatalogi pakietów Rozwiązanie 2: import bezwzględny z użyciem pełnej ścieżki Przykład: aplikacja z kodem autotestu modułu (wprowadzenie) Pakiety przestrzeni nazw w Pythonie 3.3 Semantyka pakietów przestrzeni nazw Algorytm importu Pakiety przestrzeni nazw w akcji Zagnieżdżanie pakietów przestrzeni nazw Pliki nadal mają pierwszeństwo przed katalogami Rozdział 25. Zaawansowane zagadnienia związane z modułami Koncepcje związane z projektowaniem modułów Ukrywanie danych w modułach Przykład kod działający w dwóch trybach Symbole walut: Unicode w akcji Notki dokumentacyjne: dokumentacja modułu w działaniu Modyfikacja ścieżki wyszukiwania modułów Rozszerzenie as dla instrukcji import oraz from Przykład moduły są obiektami Importowanie modułów z użyciem nazwy w postaci ciągu znaków Uruchamianie ciągów znaków zawierających kod Bezpośrednie wywołania: dwie opcje Przykład przechodnie przeładowywanie modułów Przeładowywanie rekurencyjne Testowanie przeładowań rekurencyjnych Rozwiązania alternatywne Testowanie wariantów przeładowania Pułapki związane z modułami Kolizje nazw modułów: pakiety i importowanie względne w pakietach W kodzie najwyższego poziomu kolejność instrukcji ma znaczenie Instrukcja from kopiuje nazwy, jednak łącza już nie Instrukcja from może zaciemnić znaczenie zmiennych Funkcja reload może nie mieć wpływu na obiekty importowane za pomocą from Funkcja reload i instrukcja from a testowanie interaktywne Rekurencyjne importowanie za pomocą from może nie działać Część VI Klasy i programowanie zorientowane obiektowo Rozdział 26. Programowanie zorientowane obiektowo wprowadzenie Po co używa się klas Programowanie zorientowane obiektowo z dystansu Wyszukiwanie atrybutów dziedziczonych Klasy a instancje Wywołania metod klasy Tworzenie drzew klas Przeciążanie operatorów Programowanie zorientowane obiektowo oparte jest na ponownym wykorzystaniu kodu Polimorfizm i klasy Programowanie przez dostosowanie Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Rozdział 27. Podstawy tworzenia klas Klasy generują wiele obiektów instancji Obiekty klas udostępniają zachowania domyślne Obiekty instancji są rzeczywistymi elementami Pierwszy przykład Klasy dostosowujemy do własnych potrzeb przez dziedziczenie Drugi przykład Klasy są atrybutami w modułach Klasy mogą przechwytywać operatory Pythona Trzeci przykład Zwracamy wyniki lub nie Po co przeciążamy operatory Najprostsza klasa Pythona na świecie Jeszcze kilka słów o rekordach: klasy kontra słowniki Podsumowanie rozdziału Sprawdź swoją wiedzę quiz Sprawdź swoją wiedzę odpowiedzi Rozdział 28. Bardziej realistyczny przykład Krok 1. tworzenie instancji Tworzenie konstruktorów Testowanie w miarę pracy Wykorzystywanie kodu na dwa sposoby Krok 2. dodawanie metod Tworzenie kodu metod Krok 3. przeciążanie operatorów Udostępnienie sposobów wyświetlania Krok 4. dostosowywanie zachowania za pomocą klas podrzędnych Tworzenie klas podrzędnych Rozszerzanie metod niepoprawny sposób Rozszerzanie metod poprawny sposób Polimorfizm w akcji Dziedziczenie, dostosowanie do własnych potrzeb i rozszerzenie Programowanie zorientowane obiektowo idea Krok 5. dostosowanie do własnych potrzeb także konstruktorów Programowanie zorientowane obiektowo jest prostsze, niż się wydaje Inne sposoby łączenia klas Krok 6. wykorzystywanie narzędzi do introspekcji Specjalne atrybuty klas Uniwersalne narzędzie do wyświetlania Atrybuty instancji a atrybuty klas Nazwy w klasach narzędziowych Ostateczna postać naszych klas Krok 7. i ostatni przechowywanie obiektów w bazie danych Obiekty pickle i shelve Moduł pickle Moduł shelve Przechowywanie obiektów w bazie danych za pomocą shelve Interaktywna eksploracja obiektów shelve Uaktualnianie obiektów w pliku shelve Rozdział 29. Szczegóły kodowania klas Instrukcja class Ogólna forma Przykład Metody Przykład metody Wywoływanie konstruktorów klas nadrzędnych Inne możliwości wywoływania metod Dziedziczenie Tworzenie drzewa atrybutów Specjalizacja odziedziczonych metod Techniki interfejsów klas Abstrakcyjne klasy nadrzędne Abstrakcyjne klasy nadrzędne z Pythona 3.x oraz 2.6+: wprowadzenie Przestrzenie nazw cała historia Proste nazwy globalne, o ile nie są przypisane Nazwy atrybutów przestrzenie nazw obiektów Zen przestrzeni nazw Pythona przypisania klasyfikują zmienne Klasy zagnieżdżone jeszcze kilka słów o regule LEGB Słowniki przestrzeni nazw przegląd Łącza przestrzeni nazw przechodzenie w górę drzewa klas Raz jeszcze o notkach dokumentacyjnych Klasy a moduły Rozdział 30. Przeciążanie operatorów Podstawy Często spotykane metody przeciążania operatorów Wycinki Wycinanie i indeksowanie w Pythonie 2.x Iteratory zdefiniowane przez użytkownika Skanowanie pojedyncze i wielokrotne Klasy i generatory Wiele iteracji po jednym obiekcie Klasy i wycinki Wielokrotne iteracje za pomocą instrukcji yield Odwołania do atrybutów Przypisywanie wartości i usuwanie atrybutów Inne narzędzia do zarządzania atrybutami Emulowanie prywatności w atrybutach instancji Po co nam dwie metody wyświetlania? Uwagi dotyczące wyświetlania Dodawanie prawostronne i miejscowa modyfikacja Dodawanie prawostronne Eskalowanie typu klasy Dodawanie w miejscu Interfejsy funkcji i kod oparty na wywołaniach zwrotnych Metody logiczne w Pythonie 2.x Uwagi dotyczące stosowania destruktorów Rozdział 31. Projektowanie z użyciem klas Python a programowanie zorientowane obiektowo Polimorfizm to interfejsy, a nie sygnatury wywołań Programowanie zorientowane obiektowo i dziedziczenie związek jest Programowanie zorientowane obiektowo i kompozycja związki typu ma Raz jeszcze procesor strumienia danych Programowanie zorientowane obiektowo a delegacja obiekty opakowujące Pseudoprywatne atrybuty klas Przegląd zniekształcania nazw zmiennych Po co używa się atrybutów pseudoprywatnych Metody są obiektami z wiązaniem i bez wiązania W wersji 3.x metody niezwiązane są funkcjami Metody związane i inne obiekty wywoływane Inne obiekty wywoływane Klasy są obiektami uniwersalne fabryki obiektów Do czego służą fabryki Dziedziczenie wielokrotne klasy mieszane Tworzenie klas mieszanych Wydobywanie atrybutów odziedziczonych z użyciem dir() Wypisywanie atrybutów dla każdego obiektu w drzewie klas Uruchomienie kodu wyświetlającego drzewo Inny przykład użycia: wyświetlenie nazw zawierających znaki podkreślenia Inny przykład użycia: uruchomienie kodu z większymi modułami Moduł kolektora Miejsce na udoskonalenia: algorytm MRO, sloty, interfejsy graficzne Inne zagadnienia związane z projektowaniem Rozdział 32. Zaawansowane zagadnienia związane z klasami Rozszerzanie typów wbudowanych Rozszerzanie typów za pomocą osadzania Rozszerzanie typów za pomocą klas podrzędnych Klasy w nowym stylu Jak nowy jest nowy styl Nowości w klasach w nowym stylu Pomijanie instancji we wbudowanych operacjach przy pobieraniu atrybutów Dlaczego zmieniło się wyszukiwanie? Implikacje wynikające z przechwytywania atrybutów Wymogi kodowania obiektów pośredniczących Więcej informacji Zmiany w modelu typów Konsekwencje z perspektywy kontroli typów Wszystkie obiekty dziedziczą po klasie object Implikacje wynikające z użycia metod domyślnych Zmiany w dziedziczeniu diamentowym Implikacje wynikające z dziedziczenia diamentowego Jawne rozwiązywanie konfliktów Zakres zmian kolejności wyszukiwania Więcej o kolejności odwzorowywania nazw Algorytm MRO Śledzenie algorytmu MRO Przykład wiązanie atrybutów ze źródłami dziedziczenia Nowości w klasach w nowym stylu Sloty: deklaracje atrybutów Podstawy slotów Sloty i słowniki przestrzeni nazw Wiele slotów w klasach nadrzędnych Generyczna obsługa slotów i innych wirtualnych atrybutów Zasady używania slotów Przykład stosowania slotów: klasa ListTree i funkcja mapattrs Co z szybkością slotów? Właściwości klas: dostęp do atrybutów Podstawy właściwości Inne zmiany i rozszerzenia klas Metody statyczne oraz metody klasy Do czego potrzebujemy metod specjalnych Metody statyczne w 2.x i 3.x Alternatywy dla metod statycznych Używanie metod statycznych i metod klas Zliczanie instancji z użyciem metod statycznych Zliczanie instancji z metodami klas Zliczanie instancji dla każdej z klas z użyciem metod klas Dekoratory i metaklasy część 1. Podstawowe informacje o dekoratorach funkcji Pierwsze spojrzenie na funkcję dekoratora zdefiniowaną przez użytkownika Pierwsze spojrzenie na dekoratory klas i metaklasy Dalsza lektura Wbudowana funkcja super: zmiana na lepsze czy na gorsze? Wielka debata o funkcji super Tradycyjny, uniwersalny i ogólny sposób wywoływania klasy nadrzędnej Podstawy i kompromisy użycia funkcji super Stara semantyka: magiczny obiekt pośredniczący w wersji 3.x Pułapka: beztroskie stosowanie wielokrotnego dziedziczenia Ograniczenie: przeciążanie operatorów Różnice w użyciu w wersji 2.x: rozbudowane wywołania Zalety funkcji super: zmiany drzewa i kierowania metod Zmiana klasy w trakcie działania programu a funkcja super Kooperatywne kierowanie metod w drzewie wielokrotnego dziedziczenia Podstawy: kooperatywne wywołanie funkcji super w akcji Ograniczenie: wymóg zakotwiczenia łańcucha wywołań Zakresy: model wszystko lub nic Elastyczność założenia dotyczącego kolejności wywołań Dostosowywanie: zastąpienie metody Sprzęganie: zastosowanie w mieszaniu klas Dostosowywanie: wymóg takich samych argumentów Podsumowanie funkcji super Pułapki związane z klasami Modyfikacja atrybutów klas może mieć efekty uboczne Modyfikowanie mutowalnych atrybutów klas również może mieć efekty uboczne Dziedziczenie wielokrotne kolejność ma znaczenie Zakresy w metodach i klasach Różne pułapki związane z klasami Rozsądnie wybieraj miejsce przechowywania atrybutu w instancji lub w klasie Zazwyczaj wywołuj konstruktory klasy nadrzędnej Klasy wykorzystujące delegację w 3.x getattr i funkcje wbudowane Przesadne opakowywanie Część VII Wyjątki oraz narzędzia Rozdział 33. Podstawy wyjątków Po co używa się wyjątków Role wyjątków Wyjątki w skrócie Domyślny program obsługi wyjątków Przechwytywanie wyjątków Zgłaszanie wyjątków Wyjątki zdefiniowane przez użytkownika Działania końcowe Rozdział 34. Szczegółowe informacje dotyczące wyjątków Przechwytywanie wybranych i wszystkich wyjątków Przechwytywanie wszystkich wyjątków: pusta instrukcja except i klasa Exception Część try/else Przykład zachowanie domyślne Przykład przechwytywanie wbudowanych wyjątków Instrukcja try/finally Przykład działania kończące kod z użyciem try/finally Połączona instrukcja try/except/finally Składnia połączonej instrukcji try Łączenie finally oraz except za pomocą zagnieżdżania Przykład połączonego try Instrukcja raise Zgłaszanie wyjątków Zakresy widoczności zmiennych w instrukcjach try i except Przekazywanie wyjątków za pomocą raise Łańcuchy wyjątków w Pythonie 3.x raise from Instrukcja assert Przykład wyłapywanie ograniczeń (ale nie błędów!) Menedżery kontekstu with/as Podstawowe zastosowanie Protokół zarządzania kontekstem Kilka menedżerów kontekstu w wersjach 3.1, 2.7 i nowszych Rozdział 35. Obiekty wyjątków Wyjątki powrót do przyszłości Wyjątki oparte na łańcuchach znaków znikają Wyjątki oparte na klasach Tworzenie klas wyjątków Do czego służą hierarchie wyjątków Wbudowane klasy wyjątków Kategorie wbudowanych wyjątków Domyślne wyświetlanie oraz stan Własne sposoby wyświetlania Własne dane oraz zachowania Udostępnianie szczegółów wyjątku Udostępnianie metod wyjątków Rozdział 36. Projektowanie z wykorzystaniem wyjątków Zagnieżdżanie programów obsługi wyjątków Przykład zagnieżdżanie przebiegu sterowania Przykład zagnieżdżanie składniowe Zastosowanie wyjątków Wychodzenie z głęboko zagnieżdżonych pętli: instrukcja go to Wyjątki nie zawsze są błędami Funkcje mogą sygnalizować warunki za pomocą raise Zamykanie plików oraz połączeń z serwerem Debugowanie z wykorzystaniem zewnętrznych instrukcji try Testowanie kodu wewnątrz tego samego procesu Więcej informacji na temat funkcji sys.exc_info Wyświetlanie błędów i śladów stosu Wskazówki i pułapki dotyczące projektowania wyjątków Co powinniśmy opakować w try Jak nie przechwytywać zbyt wiele unikanie pustych except i wyjątków Jak nie przechwytywać zbyt mało korzystanie z kategorii opartych na klasach Podsumowanie podstaw języka Python Zbiór narzędzi Pythona Narzędzia programistyczne przeznaczone do większych projektów Część VIII Zagadnienia zaawansowane Rozdział 37. Łańcuchy znaków Unicode oraz łańcuchy bajtowe Zmiany w łańcuchach znaków w Pythonie 3.x Podstawy łańcuchów znaków Kodowanie znaków Jak Python zapisuje ciągi znaków w pamięci Typy łańcuchów znaków Pythona Po co są stosowane różne typy ciągów? Pliki binarne i tekstowe Podstawy kodowania ciągów znaków Literały tekstowe w Pythonie 3.x Literały Unicode w Pythonie 2.x i 3.3 Literały tekstowe w Pythonie 2.x Konwersje typów ciągów Kod łańcuchów znaków Unicode Kod tekstu z zakresu ASCII Kod tekstu spoza zakresu ASCII Kodowanie i dekodowanie tekstu spoza zakresu ASCII Inne techniki kodowania łańcuchów Unicode Literały bajtowe Konwersja kodowania Łańcuchy znaków Unicode w Pythonie 2.x Mieszanie typów ciągów w wersji 2.x Deklaracje typu kodowania znaków pliku źródłowego Wykorzystywanie obiektów bytes z Pythona 3.x Wywołania metod Operacje na sekwencjach Inne sposoby tworzenia obiektów bytes Mieszanie typów łańcuchów znaków Obiekt bytearray w wersji 3.x (oraz 2.6 lub nowszej) Typ bytearray w akcji Podsumowanie typów ciągów znaków w Pythonie 3.x Wykorzystywanie plików tekstowych i binarnych Podstawy plików tekstowych Tryby tekstowy i binarny w Pythonie 2.x i 3.x Brak dopasowania typu i zawartości w Pythonie 3.x Wykorzystywanie plików Unicode Odczyt i zapis Unicode w Pythonie 3.x Kodowanie ręczne Kodowanie danych wyjściowych pliku Dekodowanie danych wejściowych pliku Dekodowanie błędnych dopasowań Obsługa BOM w Pythonie 3.x Pomijanie znacznika BOM w Notatniku Pomijanie znacznika BOM w Pythonie Pliki Unicode w Pythonie 2.x Unicode w nazwach plików i w strumieniach Nazwy plików: znaki i bajty Zawartość strumienia: zmienna PYTHONIOENCODING Inne zmiany w narzędziach do przetwarzania łańcuchów znaków w Pythonie 3.x Moduł dopasowywania wzorców re Moduł danych binarnych struct Moduł serializacji obiektów pickle Narzędzia do analizy składniowej XML Rozdział 38. Zarządzane atrybuty Po co zarządza się atrybutami Wstawianie kodu wykonywanego w momencie dostępu do atrybutów Właściwości Podstawy Pierwszy przykład Obliczanie atrybutów Zapisywanie właściwości w kodzie za pomocą dekoratorów Dekoratory setter i deleter Deskryptory Podstawy Argumenty metod deskryptorów Deskryptory tylko do odczytu Pierwszy przykład Obliczone atrybuty Wykorzystywanie informacji o stanie w deskryptorach Powiązania pomiędzy właściwościami a deskryptorami Deskryptory, sloty i nie tylko Podstawy Unikanie pętli w metodach przechwytujących atrybuty Pierwszy przykład Obliczanie atrybutów Porównanie technik zarządzania atrybutami Przechwytywanie atrybutów wbudowanych operacji Powrót do menedżerów opartych na delegacji Przykład sprawdzanie poprawności atrybutów Wykorzystywanie właściwości do sprawdzania poprawności Testowanie kodu Wykorzystywanie deskryptorów do sprawdzania poprawności Opcja 1: sprawdzanie z wykorzystaniem współdzielonego stanu deskryptora instancji Opcja 2: sprawdzanie z wykorzystaniem indywidualnego stanu instancji Rozdział 39. Dekoratory Czym jest dekorator Zarządzanie wywołaniami oraz instancjami Zarządzanie funkcjami oraz klasami Wykorzystywanie i definiowanie dekoratorów Do czego służą dekoratory Podstawy Dekoratory funkcji Zastosowanie Implementacja Obsługa dekoracji metod Dekoratory klas Zastosowanie Implementacja Obsługa większej liczby instancji Zagnieżdżanie dekoratorów Argumenty dekoratorów Dekoratory zarządzają także funkcjami oraz klasami Kod dekoratorów funkcji Śledzenie wywołań Możliwości w zakresie zachowania informacji o stanie Atrybuty instancji klasy Zakresy zawierające oraz zmienne globalne Zakresy funkcji zawierających oraz zmienne nielokalne Atrybuty funkcji Uwagi na temat klas I dekorowanie metod klas Wykorzystywanie zagnieżdżonych funkcji do dekoracji metod Wykorzystywanie deskryptorów do dekorowania metod Mierzenie czasu wywołania Dekoratory a pomiar czasu wywołania Niuanse pomiaru czasu Dodawanie argumentów dekoratora Pomiar czasu z użyciem argumentów dekoratora Kod dekoratorów klas Klasy singletona Alternatywne rozwiązania Śledzenie interfejsów obiektów Śledzenie interfejsów za pomocą dekoratorów klas Stosowanie dekoratorów klas z wbudowanymi typami Uwagi na temat klas II zachowanie większej liczby instancji Dekoratory a funkcje zarządzające Do czego służą dekoratory (raz jeszcze) Bezpośrednie zarządzanie funkcjami oraz klasami Przykład atrybuty prywatne i publiczne Implementacja atrybutów prywatnych Szczegóły implementacji I Dziedziczenie a delegacja Argumenty dekoratora Zachowywanie stanu i zakresy funkcji zawierającej Uogólnienie kodu pod kątem deklaracji atrybutów jako publicznych Szczegóły implementacji II Użycie nazw pseudoprywatnych Złamanie prywatności Kompromisy związane z dekoratorem Znane problemy Ograniczenie: delegacja metod przeciążania operatorów kończy się niepowodzeniem w Pythonie 3.x Sposoby redefiniowania metod przeciążających operatory w wersji 3.x Definicja śródwierszowa Nadrzędne klasy mieszane Warianty kodowania: routery, deskryptory, automatyzacja Czy metody operatorów należy weryfikować? Alternatywy implementacyjne: wstawianie getattribute, inspekcja stosu wywołań W Pythonie nie chodzi o kontrolę Przykład sprawdzanie poprawności argumentów funkcji Cel Prosty dekorator sprawdzający przedziały dla argumentów pozycyjnych Uogólnienie kodu pod kątem słów kluczowych i wartości domyślnych Szczegóły implementacji Dalsza introspekcja Założenia dotyczące argumentów Algorytm dopasowywania Znane problemy Niepoprawne wywołania Dowolne argumenty Zagnieżdżone dekoratory Argumenty dekoratora a adnotacje funkcji Inne zastosowania sprawdzanie typów (skoro nalegamy!) Rozdział 40. Metaklasy Tworzyć metaklasy czy tego nie robić? Zwiększające się poziomy magii Język pełen haczyków Wady funkcji pomocniczych Metaklasy a dekoratory klas runda 1. Model metaklasy Klasy są instancjami obiektu type Metaklasy są klasami podrzędnymi klasy type Protokół instrukcji class Deklarowanie metaklas Deklarowanie w wersji 3.x Deklarowanie w wersji 2.x Kierowanie metaklas w wersjach 3.x i 2.x Tworzenie metaklas Prosta metaklasa Dostosowywanie tworzenia do własnych potrzeb oraz inicjalizacja Pozostałe sposoby tworzenia metaklas Użycie prostych funkcji fabrycznych Przeciążenie wywołań tworzących klasę za pomocą zwykłych klas Przeciążenie wywołań tworzących klasę za pomocą metaklas Instancje a dziedziczenie Metaklasa a klasa nadrzędna Dziedziczenie: pełna historia Algorytm dziedziczenia w Pythonie: wersja prosta Specjalny przypadek deskryptorów Algorytm dziedziczenia w Pythonie: wersja nieco pełniejsza Dziedziczenie przypisań atrybutów Specjalny przypadek wbudowanych operacji Metody metaklas Metody metaklasy a metody klasy Przeciążanie operatorów w metodach metaklasy Przykład dodawanie metod do klas Ręczne rozszerzanie Rozszerzanie oparte na metaklasie Metaklasy a dekoratory klas runda 2. Rozszerzenie oparte na dekoratorach Zarządzanie instancjami zamiast klasami Metaklasa równoważna dekoratorowi klasy? Przykład zastosowanie dekoratorów do metod Ręczne śledzenie za pomocą dekoracji Śledzenie za pomocą metaklas oraz dekoratorów Zastosowanie dowolnego dekoratora do metod Metaklasy a dekoratory klas runda 3. (i ostatnia) Rozdział 41. Wszystko, co najlepsze Paradoks Pythona Opcjonalne cechy języka Przeciwko niepokojącym usprawnieniom Złożoność a siła Prostota a elitarność
Sygnatura czytelni BWB: IX F 27
Sygnatura czytelni BWEAiI: XII Ł 208
Ta pozycja znajduje się w zbiorach 2 placówek. Rozwiń listę, by zobaczyć szczegóły.
Biblioteka WB
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 152529 (1 egz.)
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 152528 (1 egz.)
Książka
W koszyku
(O'Reilly)
U góry okł.: Skarbnica wiedzy dla programistów Pythona.
Sygnatura czytelni BWEAiI: XII Ł 132
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Biblioteka WEAiI
Egzemplarze są dostępne wyłącznie na miejscu w bibliotece: sygn. 114628 N (1 egz.)
Pozycja została dodana do koszyka. Jeśli nie wiesz, do czego służy koszyk, kliknij tutaj, aby poznać szczegóły.
Nie pokazuj tego więcej

Deklaracja dostępności