Trojan Anna
Sortowanie
Źródło opisu
Książki, czasopisma i zbiory specjalne
(12)
Forma i typ
Książki
(12)
Publikacje fachowe
(10)
Publikacje dydaktyczne
(2)
Dostępność
dostępne
(6)
tylko na miejscu
(6)
wypożyczone
(1)
Placówka
Wypożyczalnia
(7)
Biblioteka WB
(1)
Biblioteka WEAiI
(5)
Autor
Berłowski Paweł
(189)
Kotowski Włodzimierz
(179)
Praca zbiorowa
(157)
Skoczylas Zbigniew
(152)
Stiasny Grzegorz
(143)
Trojan Anna
(-)
Sadlik Ryszard
(142)
Blum Maciej
(140)
Michalski Dariusz
(134)
Lewandowski Maciej
(131)
Majewski Jerzy S
(131)
Etzold Hans-Rüdiger
(120)
Leśniewski Mariusz
(116)
Gewert Marian
(108)
Maruchin Wojciech
(107)
Guryn Halina
(105)
Traczyk Wojciech
(101)
Chalastra Michał
(99)
Kardyś Marta
(97)
Marx Karl (1818-1883)
(94)
Nazwisko Imię
(94)
Berkieta Mateusz
(93)
Tomczak Małgorzata
(93)
Polkowski Sławomir
(92)
Engels Friedrich (1820-1895)
(91)
Jakubiec Izabela
(90)
Kotapski Roman
(90)
Rybicki Piotr
(90)
Krysicki Włodzimierz (1905-2001)
(88)
Teleguj Kazimierz
(88)
Kapołka Maciej
(86)
Mikołajewska Emilia
(84)
Zaborowska Joanna
(81)
Piątek Grzegorz
(79)
Rudnicki Bogdan
(79)
Starosolski Włodzimierz (1933- )
(79)
Meryk Radosław
(78)
Górczyński Robert
(77)
Polit Ryszard
(77)
Mroczek Wojciech
(76)
Kulawik Marta
(74)
Mycielski Krzysztof
(74)
Myszkorowski Jakub
(73)
Konopka Eduard
(71)
Jabłoński Marek
(70)
Bielecki Jan (1942-2001)
(69)
Knosala Ryszard (1949- )
(68)
Rajca Piotr (1970- )
(68)
Rymarz Małgorzata
(68)
Walczak Krzysztof
(68)
Walkiewicz Łukasz
(68)
Wiecheć Marek
(68)
Jabłoński Adam
(67)
Laszczak Mirosław
(66)
Piwko Łukasz
(66)
Wodziczko Piotr
(65)
Dziedzic Zbigniew
(64)
Sidor-Rządkowska Małgorzata
(64)
Żakowski Wojciech (1929-1993)
(64)
Pasko Marian
(62)
Włodarski Lech (1916-1997)
(62)
Czakon Wojciech
(61)
Leyko Jerzy (1918-1995)
(61)
Jankowski Mariusz
(60)
Kostecka Alicja
(60)
Lenin Włodzimierz (1870-1924)
(60)
Paszkowska Małgorzata
(60)
Wróblewski Piotr
(60)
Karpińska Marta
(59)
Próchnicki Wojciech
(59)
Rogala Elżbieta
(59)
Bielecki Maciej
(57)
Jelonek Jakub
(57)
Malkowski Tomasz
(57)
Pilch Piotr
(57)
Rauziński Robert (1933- )
(57)
Gawrońska Joanna
(56)
Ajdukiewicz Andrzej (1939- )
(55)
Cieślak Piotr
(55)
Draniewicz Bartosz
(55)
Godek Piotr
(55)
Osiński Zbigniew (1926-2001)
(55)
Jasiński Filip
(54)
Kuliński Włodzisław
(54)
Suchodolski Bogdan (1903-1992)
(54)
Forowicz Krystyna
(53)
Klupiński Kamil
(53)
Szkutnik Leon Leszek
(52)
Zdanikowski Paweł
(52)
Wantuch-Matla Dorota
(51)
Barowicz Marek
(50)
Trammer Hubert
(50)
Walczak Tomasz
(50)
Watrak Andrzej
(50)
Zgółkowa Halina (1947- )
(50)
Barańska Katarzyna
(49)
Czajkowska-Matosiuk Katarzyna
(49)
Jurlewicz Teresa
(49)
Pikoń Andrzej
(49)
Szargut Jan (1923- )
(49)
Chojnacki Ireneusz
(48)
Rok wydania
2020 - 2024
(3)
2010 - 2019
(4)
2000 - 2009
(5)
Okres powstania dzieła
2001-
(8)
Kraj wydania
Polska
(12)
Język
polski
(12)
Odbiorca
Programiści
(2)
Przynależność kulturowa
2001
(1)
Temat
JavaScript (język programowania)
(4)
Kaskadowe arkusze stylów
(4)
Projektowanie stron WWW
(4)
Strony WWW
(4)
Ajax (informatyka)
(2)
HTML (język znaczników)
(2)
Programowanie (informatyka)
(2)
Python (język programowania)
(2)
eXtensible HyperText Markup Language (język składu dokumentu)
(2)
Grafika komputerowa
(1)
HTML
(1)
Portale internetowe
(1)
Ruby (język programowania)
(1)
Ruby on Rails (platforma informatyczna)
(1)
Wzorce projektowe (informatyka)
(1)
XHTML (język programowania)
(1)
eXtensible Markup Language (język znaczników)
(1)
eXtensible Stylesheet Language Transformations (język programowania)
(1)
jQuery (platforma informatyczna)
(1)
Gatunek
Podręcznik
(9)
Przewodniki
(3)
Dziedzina i ujęcie
Informatyka i technologie informacyjne
(10)
12 wyników Filtruj
Książka
W koszyku
(Technologia i Rozwiązania)
Tyt. oryg.: Learning jQuery 1.3.
Na s. tyt. i okł. nazwa wydawcy oryg.: Packt.
Na okł.: Sprawdż, co jeszcze potrafi JavaScript! [...].
Indeks.
Sygnatura czytelni BWEAiI: XII N 25
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. 126903 N (1 egz.)
Książka
W koszyku
Ruby on Rails / David Griffiths ; [tł.: Anna Trojan]. - Gliwice : Helion, cop. 2010. - 461 s. : il. ; 23 cm.
(Head First)
Na s. tyt. i okł.: Edycja polska.
U dołu s. tyt. i okł. logo wydawcy oryg.: O'Reilly Media.
U góry okł.: Bez wysiłku poznaj niesamowite możliwości Ruby on Rails i twórz wspaniałe aplikacje.
Indeks.
Sygnatura czytelni BWEAiI: XII L 14
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. 125739 N (1 egz.)
Brak okładki
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. 120860 N (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
Wszystkie egzemplarze są obecnie wypożyczone: 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
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 116968 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. 119315 N (1 egz.)
Książka
W koszyku
Tytuł oryginału: CSS: The Definitive Guide: Visual Presentation for the Web
Wydanie 4. odnosi się do oryginału.
Na okładce i stronie tytułowej nazwa wydawcy oryginału: O'Reilly.
Tłumaczenie z wykorzystaniem fragmentów książki "CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny. Wydanie III" w tłumaczeniu Anny Trojan.
Indeks.
1. CSS i dokumenty 27 Krótka historia stylu (w internecie) 27 Elementy 28 Elementy zastępowane oraz niezastępowane 29 Sposoby wyświetlania elementów 29 Łączenie CSS i HTML 33 Znacznik link 33 Element style 38 Dyrektywa @import 38 Odwołania przez HTTP 39 Style wewnętrzne 40 Zawartość arkusza stylów 41 Znaczniki 41 Struktura reguł 41 Prefiksy przeglądarek 42 Obsługa białych znaków 42 Komentarze CSS 44 Zapytania o media 45 Zastosowanie 45 Proste zapytania o media 45 Typy mediów 46 Deskryptory mediów 46 Deskryptory cech mediów i typy wartości 48 Zapytania o właściwości 49 2. Selektory 53 Podstawowe reguły tworzenia stylów 53 Selektory elementów 54 Deklaracje oraz słowa kluczowe 55 Grupowanie 57 Grupowanie selektorów 57 Grupowanie deklaracji 59 Grupowanie wszystkiego 60 Nowe elementy w starych przeglądarkach 61 Selektory klas oraz identyfikatorów 62 Selektory klas 62 Wiele klas 64 Selektory identyfikatorów 66 Wybór pomiędzy klasą a identyfikatorem 66 Selektory atrybutów 67 Proste wybieranie atrybutów 68 Wybieranie według dokładnej wartości atrybutu 69 Wybieranie oparte na częściowej wartości atrybutu 71 Identyfikator braku wrażliwości na wielkość znaków 75 Wykorzystywanie struktury dokumentu 76 Omówienie relacji pomiędzy elementami rodzica i dziecka 76 Selektory kontekstowe 78 Wybieranie elementów dzieci 81 Wybieranie przylegających elementów rodzeństwa 82 Wybieranie następnych elementów rodzeństwa 83 Selektory pseudoklas 84 Łączenie pseudoklas 85 Pseudoklasy strukturalne 85 Pseudoklasy dynamiczne 97 Pseudoklasy obsługujące stan interfejsu 102 Pseudoklasa :target 107 Pseudoklasa :lang 108 Pseudoklasa negacji 109 Selektory pseudoelementów 112 3. Specyficzność i kaskada 117 Specyficzność 117 Deklaracje oraz specyficzność 119 Specyficzność selektora uniwersalnego 120 Specyficzność selektorów identyfikatorów oraz atrybutów 120 Specyficzność liniowych stylów wewnętrznych 121 Ważność 121 Dziedziczenie 122 Kaskada 125 Sortowanie według wagi oraz pochodzenia 126 Sortowanie według specyficzności 127 Sortowanie według kolejności 127 Wskazówki prezentacyjne niezwiązane z CSS 130 4. Wartości oraz jednostki 131 Słowa kluczowe, łańcuchy znaków i inne wartości tekstowe 131 Słowa kluczowe 131 Łańcuchy znaków 134 Adresy URL 135 Obrazy 136 Identyfikatory 136 Wartości liczbowe i procentowe 137 Wartości całkowite 137 Wartości liczbowe 137 Wartości procentowe 138 Wartości ułamkowe 138 Odległości 138 Bezwzględne jednostki długości 138 Jednostki rozdzielczości 141 Względne jednostki długości 142 Wartości obliczeniowe 147 Wartości atrybutów 148 Kolory 149 Kolory nazwane 149 Kolory RGB i RGBa 150 Kolory HSL i HSLa 154 Słowa kluczowe dotyczące kolorów 157 Kąty 157 Czas i częstotliwość 158 Położenie 159 Właściwości niestandardowe 160 5. Fonty 163 Rodziny fontów 163 Posługiwanie się rodzinami gatunkowymi 164 Określanie rodziny fontów 165 Zastosowanie deklaracji @font-face 168 Wymagane deskryptory 168 Inne deskryptory fontów 173 Łączenie deskryptorów 176 Grubość znaków 178 Jak działają wagi fontów 179 Pogrubianie 182 Wagi lżejsze 184 Deskryptor font-weight 184 Rozmiar tekstu 185 Rozmiary bezwzględne 186 Rozmiary względne 188 Wartości procentowe a rozmiary 188 Rozmiar tekstu a dziedziczenie 189 Używanie jednostek długości 192 Automatyczne korygowanie wielkości znaków 193 Style znaków 195 Deskryptor font-style 197 Rozciąganie znaków 198 Deskryptor font-stretch 200 Kerning znaków 201 Warianty fontów 201 Wartości ze specyfikacji Level 3 203 Cechy fontów 204 Deskryptor font-feature-settings 205 Generowanie odmian znaków 206 Właściwość font 207 Uwzględnianie wysokości wiersza 209 Poprawne wykorzystywanie skrótów 210 Wykorzystywanie fontów systemowych 210 Dobieranie fontów 211 6. Właściwości tekstu 215 Wcięcia oraz wyrównanie w linii 215 Wcięcia tekstu 216 Wyrównywanie tekstu 218 Wyrównywanie ostatniego wiersza 222 Wyrównywanie elementów liniowych w pionie 223 Wysokość wiersza 223 Wyrównanie tekstu w pionie 227 Odstępy pomiędzy słowami oraz literami 232 Odstępy między słowami 233 Odstępy między literami 234 Odstępy a wyrównanie 235 Transformacja tekstu 236 Dekoracja tekstu 238 Dziwne dekoracje 239 Właściwość text-rendering 241 Cień tekstu 242 Obsługa białych znaków 244 Ustalanie wielkości tabulatorów 246 Zawijanie wierszy i dzielenie słów 247 Zawijanie tekstu 252 Tryby pisania 253 Ustawianie trybów pisania 253 Zmiana orientacji tekstu 256 Określanie kierunku 257 7. Podstawowe formatowanie wizualne 261 Podstawowe pojemniki 261 Krótka powtórka 262 Blok zawierający element 263 Zmiana sposobu wyświetlania elementu 264 Zamiana ról 265 Elementy blokowe 267 Formatowanie w poziomie 268 Właściwości poziome 270 Wykorzystywanie wartości auto 271 Więcej niż jedna wartość auto 272 Marginesy ujemne 273 Wartości procentowe 275 Elementy zastępowane 276 Formatowanie w pionie 277 Właściwości pionowe 278 Wartości procentowe w pionie 279 Wysokość automatyczna 280 Składanie marginesów w pionie 281 Marginesy ujemne a składanie 283 Pozycje listy 285 Liniowe elementy wewnętrzne 287 Układ wierszy 287 Podstawowe pojęcia i koncepcje 289 Formatowanie wewnętrzne 291 Niezastępowane elementy liniowe 292 Budowanie pojemników 292 Wyrównanie w pionie 294 Zarządzanie wysokością wiersza 296 Skalowanie wysokości wiersza 298 Dodawanie właściwości pojemników 299 Zmiana sposobu łamania wierszy 302 Glify a obszar zawartości elementu 303 Zastępowane elementy liniowe 303 Dodawanie właściwości pojemnika 304 Elementy zastępowane a linia bazowa 306 Elementy liniowo-blokowe 308 Wartości flow 310 Deklaracja display: contents 311 Inne wartości właściwości display 312 Wartości wyliczone 312 8. Dopełnienie, obramowanie, kontury i marginesy 315 Podstawowe pojemniki elementów 315 Szerokość oraz wysokość 316 Dopełnienie 318 Replikowanie wartości 320 Dopełnienie jednostronne 321 Dopełnienie a wartości procentowe 323 Dopełnienie a elementy liniowe 325 Dopełnienie elementów zastępowanych 326 Obramowanie 327 Obramowanie ze stylem 328 Szerokości obramowania 332 Kolory obramowania 335 Skrótowe właściwości obramowania 337 Obramowanie globalne 339 Obramowanie i elementy liniowe 340 Zaokrąglanie rogów obramowań 341 Obramowania obrazkowe 348 Kontury 364 Style konturów 364 Szerokość konturu 365 Kolor konturu 366 Różnice dotyczące konturów 367 Marginesy 369 Marginesy i wartości długości 370 Marginesy i wartości procentowe 371 Właściwości marginesów jednostronnych 372 Składanie marginesów 372 Marginesy ujemne 374 Marginesy a elementy liniowe 375 9. Kolory, tła i gradienty 379 Kolory 379 Kolory pierwszego planu 379 Oddziaływanie na obramowanie 381 Oddziaływanie na elementy formularzy 382 Dziedziczenie koloru 383 Tło 384 Kolor tła 384 Przycinanie tła 387 Obrazy w tle 390 Położenie tła 394 Zmiana obszaru pozycjonowania tła 403 Powielanie tła (albo brak powielania) 406 Mocowanie 415 Skalowanie obrazów w tle 419 A teraz... wszystko naraz 426 Wiele teł 429 Gradienty 434 Gradienty liniowe 435 Gradienty kołowe 448 Przetwarzanie obrazów gradientów 459 Gradienty cykliczne 461 Cienie pojemników 465 10. Elementy pływające i kształty 469 Pływanie 469 Elementy pływające 470 Pływanie - szczegóły 472 Rzeczywiste zachowanie 478 Pływanie, zawartość i nakładanie się 483 Właściwość clear 484 Kształty elementów pływających 488 Tworzenie kształtu 488 Kształtowanie na podstawie przezroczystości obrazu 499 Dodawanie marginesu kształtu 500 11. Pozycjonowanie 503 Podstawowe koncepcje 503 Typy pozycjonowania 503 Blok zawierający 504 Właściwości przesunięcia 505 Szerokość oraz wysokość 508 Ustawianie szerokości oraz wysokości 508 Ograniczanie szerokości oraz wysokości 509 Wypływanie oraz przycinanie zawartości 511 Wypływanie 511 Widoczność elementu 513 Pozycjonowanie bezwzględne 514 Bloki zawierające elementy a elementy pozycjonowane bezwzględnie 514 Rozmieszczenie i rozmiar elementów pozycjonowanych bezwzględnie 517 Automatyczne krawędzie 518 Rozmieszczenie oraz rozmiar elementów niezastępowanych 520 Rozmieszczenie oraz rozmiar elementów zastępowanych 524 Rozmieszczenie elementów na osi Z 526 Pozycjonowanie typu fixed 530 Pozycjonowanie względne 531 Pozycjonowanie typu sticky 533
12. Model Flexible Box 539 Podstawy modelu flexbox 539 Prosty przykład 541 Pojemniki flex 545 Właściwość flex-direction 545 Inne kierunki pisania 549 Zawijanie linii flex 551 Definiowanie elastycznego układu treści 553 Właściwość flex-wrap - ciąg dalszy 559 Układanie obiektów flex 560 Pojemnik flex 561 Wyrównywanie treści 561 Przykłady działania właściwości justify-content 567 Wyrównywanie obiektów 568 Wyrównanie do początku, do końca i do środka 573 Wyrównanie do linii bazowej 574 Uwagi dodatkowe 575 Właściwość align-self 576 Wyrównywanie treści 577 Wartości space-between, space-around i space-evenly 581 Obiekty flex 582 Czym są obiekty flex? 582 Cechy obiektów flex 584 Szerokości minimalne 585 Właściwości obiektów flex 587 Właściwość flex 587 Właściwość flex-grow 588 Współczynniki wzrostu a właściwość flex 591 Właściwość flex-shrink 594 Proporcjonalne zwężanie obiektów na podstawie ich szerokości oraz współczynnika kurczenia 598 Różne bazy flex 599 Responsywna zmiana wielkości 601 Właściwość flex-basis 604 Słowo kluczowe content 604 Automatyczna baza flex 606 Wartości domyślne 607 Jednostki długości 608 Baza zerowa 612 Skrótowa właściwość flex 613 Typowe wartości właściwości flex 613 Właściwość order 618 Raz jeszcze o nawigacji zakładkowej 620 13. Układ siatkowy 623 Tworzenie pojemnika siatki 623 Podstawowa terminologia związana z siatkami 626 Rozmieszczanie linii siatki 628 Tory siatek o stałej szerokości 629 Elastyczne tory siatek 633 Dopasowywanie zawartości torów 640 Powtarzanie linii siatki 642 Obszary siatki 646 Dołączanie obiektów do siatki 652 Zastosowanie linii kolumn i rzędów 652 Skrótowe właściwości rzędów i kolumn 656 Siatka niejawna 659 Obsługa błędów 661 Zastosowanie obszarów 662 Nakładanie się obiektów siatki 665 Przepływ siatki 666 Automatyczne linie siatki 671 Skrótowa właściwość grid 673 Podsiatki 675 Tworzenie odstępów w siatkach 676 Odstępy (przerwy) między torami 676 Obiekty siatki a model pudełkowy 678 Wyrównywanie i siatki 682 Wyrównywanie i justowanie pojedynczych obiektów 683 Wyrównywanie i justowanie wszystkich obiektów 685 Warstwy i kolejność 687 14. Układ tabelaryczny 691 Formatowanie tabel 691 Tworzenie wyglądu tabeli 691 Wartości wyświetlania tabeli 693 Anonimowe obiekty tabeli 697 Warstwy tabeli 701 Podpisy 702 Obramowanie komórek tabeli 704 Oddzielone obramowanie komórek tabeli 704 Składanie obramowania komórek tabeli 707 Rozmiar tabeli 712 Szerokość 712 Wysokość 718 Wyrównanie 719 15. Listy oraz zawartość generowana 723 Listy 723 Typy list 724 Obrazkowe znaki wypunktowania 726 Pozycja znaku wypunktowania listy 729 Style listy w skrócie 730 Układ listy 731 Zawartość generowana 733 Wstawianie zawartości generowanej 734 Określanie zawartości 736 Liczniki 741 Definiowanie wzorców numerowania 747 Stałe wzorce numerowania 749 Cykliczne wzorce numerowania 751 Symboliczne wzorce numerowania 754 Alfabetyczne wzorce numerowania 757 Liczbowe systemy numerowania 758 Addytywne systemy numerowania 761 Rozszerzanie wzorców numerowania 763 Wymawianie wzorców numeracji 764 16. Przekształcenia 767 Układy współrzędnych 767 Przekształcanie 771 Funkcje przekształceń 774 Więcej właściwości przekształceń 788 Przesuwanie punktu początkowego 788 Wybieranie stylu 3D 791 Zmiana perspektywy 794 Tylne ścianki 797 17. Przejścia 801 Przejścia CSS 801 Właściwości przejść 802 Ograniczanie rodzaju przejść do konkretnych właściwości 806 Ustalanie czasu trwania przejścia 812 Zmiana tempa przejść 814 Opóźnianie przejść 819 Skrótowa właściwość transition 822 Na odwrót: przejście do początku 824 Animowane właściwości i wartości 828 Na czym polega interpolacja wartości właściwości? 829 Wyjścia awaryjne: przejścia to tylko ozdobniki 832 Drukowanie przejść 832 18. Animacje 835 Definiowanie klatek kluczowych 836 Konfigurowanie animacji na klatkach kluczowych 837 Nadawanie nazwy animacji 837 Selektory klatek kluczowych 838 Pomijanie wartości from i to 839 Powtarzanie właściwości klatek kluczowych 840 Właściwości dające się animować 841 Nieanimowane właściwości, które nie są ignorowane 842 Zastosowanie skryptów w animacjach @keyframes 842 Animowanie elementów 843 Nazywanie animacji 844 Definiowanie długości animacji 846 Deklarowanie iteracji animacji 847 Ustalanie kierunku animacji 849 Opóźnianie animacji 850 Zdarzenia związane z animacjami 852 Zmiana wewnętrznego tempa animacji 860 Ustawianie stanu odtwarzania animacji 871 Tryby uzupełniania animacji 872 I wszystko razem... 874 Animacje, specyficzność i kolejność 877 Specyficzność i dyrektywa !important 877 Kolejność animacji 878 Iterowanie animacji i reguła display: none 878 Animacja i wątek UI 879 Epilepsja i zaburzenia przedsionkowe 879 Zdarzenia animacji a prefiksy 880 Zdarzenie animationstart 880 Zdarzenie animationend 881 Zdarzenie animationiteration 881 Drukowanie animacji 881 19. Filtry, mieszanie, przycinanie i maskowanie 883 Filtry CSS 883 Filtry podstawowe 884 Filtrowanie kolorów 886 Jasność, kontrast i nasycenie 887 Filtry SVG 888 Nakładanie i mieszanie 889 Mieszanie elementów 890 Przyciemnianie, rozjaśnianie, różnica i wykluczanie 891 Mnożenie, ekran i nakładka 892 Ostre i miękkie światło 893 Rozjaśnianie i ściemnianie 894 Barwa, nasycenie, jasność i kolor 895 Mieszanie tła 896 Mieszanie w izolacji 899 Przycinanie i maskowanie 900 Przycinanie 900 Kształty przycinające 902 Pojemniki przycinające 902 Reguły wypełniania kształtów przycinających 905 Maski 906 Definiowanie maski 907 Zmiana trybu działania maski 909 Skalowanie i powtarzanie masek 911 Pozycjonowanie masek 912 Przycinanie i łączenie masek 914 Zbierzmy wszystko w całość... 917 Rodzaje masek 919 Maskowanie w obramowaniach obrazkowych 919 Dopasowywanie i pozycjonowanie obiektu 920 20. Style zależne od medium 925 Definiowanie stylów zależnych od medium 925 Podstawowe zapytania o media 925 Złożone zapytania o media 927 Media stronicowe 934 Style wydruków 935 A. Właściwości animowane 949 B. Zestawienie właściwości 957 C. Tabela odpowiedników kolorów 967
Sygnatura czytelni BWEAiI: XII Ź 148
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. 147413 N (1 egz.)
Brak okładki
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. 120807 N (1 egz.)
Książka
W koszyku
Tytuł oryginału: Learning web design : a beginner's guide to HTML, CSS, JavaScript, and web graphics.
Wydanie 5. odnosi się do oryginału.
Na stronie tytułowej również informacje o miejscach wydania i wydawcy oryginału - O'Reilly.
Na książce także ISBN oryginału: 978-83-283-6203-1.
Indeks.
Rozdział 1. Rozpoczęcie projektowania witryn internetowych (3) Role podczas tworzenia witryn internetowych (4) Rozdział 2. Jak działa internet? (21) Internet a Web (21) Dostarczanie informacji (22) Kilka słów o przeglądarkach (23) Adres strony internetowej (URL) (24) Anatomia strony internetowej (27) Składanie wszystkiego w całość (32) Rozdział 3. Kilka ważnych spraw, o których musisz wiedzieć (35) Od przybytku głowa boli (36) Trzymanie się standardów (37) Stopniowe ulepszanie (38) Technika Responsive Web Design (40) Web dla wszystkich, czyli dostępność (41) Need for Speed - liczy się szybkość (44) CZĘŚĆ II. ZNACZNIKI HTML I STRUKTURA DOKUMENTU Rozdział 4. Tworzenie prostej strony (przegląd języka HTML) (49) Strona internetowa krok po kroku (49) Przed rozpoczęciem należy uruchomić edytor tekstu (50) Krok 1. Zaczynamy od zawartości (53) Krok 2. Nadajemy dokumentowi strukturę (55) Krok 3. Oznaczamy elementy tekstowe (59) Krok 4. Wstawiamy obrazek (62) Krok 5. Zmieniamy wygląd za pomocą arkusza stylów (66) Kiedy dobre strony nie działają dobrze (67) Walidacja dokumentów (68) Przegląd elementów HTML tworzących strukturę dokumentu (70) Rozdział 5. Znaczniki tekstowe (71) Akapity (71) Nagłówki (72) Rozdzielanie treści (pozioma linia) (74) Listy (74) Inne elementy stosowane do treści (78) Struktura zawartości strony (82) Przegląd elementów liniowych (88) Ogólne elementy div oraz span (98) Poprawienie dostępności za pomocą technologii Aria (102) Znaki ucieczki (105) Zestawienie wszystkiego razem (108) Przegląd elementów tekstowych (112) Rozdział 6. Hiperłącza (113) Atrybut href (114) Tworzenie odsyłaczy do stron internetowych (115) Tworzenie odsyłaczy do stron z własnej witryny (116) Otwieranie stron docelowych w nowym oknie przeglądarki (126) Odsyłacze "pocztowe" (127) Odsyłacze "telefoniczne" (128) Przegląd elementów - odsyłacze (130) Rozdział 7. Grafika (131) Kilka słów o formatach obrazków (132) Element img (134) Dodawanie obrazków SVG (139) Kod znaczników responsywnych obrazków (146) Przegląd elementów - obrazki (162) Rozdział 8. Tabele (163) Jak używać tabel (163) Podstawowa struktura tabeli (165) Nagłówki tabel (167) Tworzenie zakresów komórek (168) Dostępność tabel (169) Grupy wierszy i kolumn (171) Podsumowanie zagadnień związanych z tabelami (173) Przegląd elementów HTML - tabele (176) Rozdział 9. Formularze (177) Jak działają formularze (177) Element form (179) Zmienne oraz zawartość (182) Wielkie podsumowanie kontrolek (183) Dostępność formularzy (203) Projekt i układ formularza (206) Formularze - przegląd elementów (209) Rozdział 10. Osadzone treści multimedialne (215) Okno w oknie (element iframe) (215) Osadzanie różnych treści na stronie (218) Elementy video i audio (219) Element canvas (228) Osadzone treści multimedialne - przegląd elementów (234) CZĘŚĆ III. CSS I PREZENTACJA DOKUMENTU Rozdział 11. Kaskadowe arkusze stylów (239) Zalety CSS-a (239) Jak działają arkusze stylów (240) Najważniejsze koncepcje (246) Jednostki miar w CSS-ie (253) Narzędzia programistyczne wbudowane w przeglądarkę WWW (256) Dalsza nauka CSS-a (258) Rozdział 12. Formatowanie tekstu (i jeszcze więcej selektorów) (261) Podstawowe właściwości czcionek (262) Typografia zaawansowana wykorzystująca CSS3 (277) Zmiana koloru tekstu (280) Więcej typów selektorów (281) Zmiana stylu wiersza tekstu (287) Podkreślenia oraz inne "dekoracje" (290) Zmiana wielkości liter (291) Odstępy (292) Cienie pod tekstem (293) Zmiany wypunktowania i numeracji list (296) Przegląd CSS-a - właściwości dotyczące czcionki oraz tekstu (301) Rozdział 13. Kolory i tła (303) Określanie wartości koloru (303) Kolor pierwszego planu (311) Kolor tła (312) Wycinanie tła (314) Zabawy z przezroczystością (315) Wprowadzenie do selektorów pseudoklas (316) Selektory pseudoelementów (320) Selektory atrybutów (323) Obrazki tła (324) Skrótowa właściwość background (338) Prawie tęcza (gradienty) (340) I wreszcie - zewnętrzne arkusze stylów (348) Przegląd CSS-a - właściwości dotyczące koloru oraz tła (354) Rozdział 14. Model pojemnika (355) Pojemnik elementu (355) Określanie wymiarów zawartości elementu (356) Dopełnienie (361) Obramowanie (366) Marginesy (376) Przypisywanie ról wyświetlania (380) Dodawanie cienia do elementów (382) Przegląd CSS-a - podstawowe właściwości modelu pojemnika (384) Rozdział 15. Pływanie oraz pozycjonowanie (387) Normalny układ dokumentu (387) Pływanie (388) Efektowne opływanie tekstu z użyciem kształtów CSS (399) Podstawy pozycjonowania (405) Pozycjonowanie względne (407) Pozycjonowanie bezwzględne (408) Pozycjonowanie sztywne (416) Przegląd CSS-a - właściwości dotyczące pływania i pozycjonowania (418) Rozdział 16. Układ CSS z użyciem modeli Flexbox i siatki (419) Elastyczne pojemniki w modelu CSS Flexbox (419) Układ oparty na siatce CSS (447) Przegląd CSS-a - właściwości układu (482) Rozdział 17. Responsywny układ strony (485) Dlaczego RWD? (485) Przepis na układ responsywny (486) Wybieranie punktów granicznych (495) Tworzenie projektu responsywnego (499) Kilka słów o testowaniu (512) Więcej zasobów RWD (514) Rozdział 18. Przekształcenia, transformacje i animacje (517) Przejścia CSS (517) Transformacje CSS (527) Animacja klatkowa (536) Przegląd właściwości CSS-a - przejścia, transformacje i animacje (545) Rozdział 19. Więcej technik CSS (547) Nadawanie stylów formularzom (547) Nadawanie stylów tabelom (550) Czysta strona (zerowanie stylów CSS i normalize.css) (554) Techniki zastępowania tekstu obrazkiem (556) Technika CSS Sprites (557) Wykrywanie obsługiwanych funkcji CSS (559) Podsumowanie arkuszy stylów (564) Przegląd CSS-a - właściwości dotyczące tabel oraz list (566) Rozdział 20. Nowoczesne narzędzia do tworzenia witryn internetowych (567) Krótkie wprowadzenie do powłoki (567) Potężne narzędzia CSS-a (procesory) (572) Narzędzia do kompilacji (Grunt i Gulp) (578) System kontroli wersji za pomocą Git i GitHub (581) CZĘŚĆ IV. JAVASCRIPT Rozdział 21. Wprowadzenie do JavaScriptu (593) Czym jest JavaScript? (593) Dodawanie skryptów na stronę (597) Anatomia skryptu (598) Obiekt przeglądarki (613) Zdarzenia (613) Więcej informacji o JavaScripcie (617) Rozdział 22. Korzystanie z JavaScriptu i modelu obiektowego DOM (621) Poznaj model DOM (621) Wypełniacze (630) Javascriptowe biblioteki (632) Wielkie zakończenie (637) CZĘŚĆ V. TWORZENIE GRAFIKI STRON INTERNETOWYCH Rozdział 23. Podstawy grafiki stron internetowych (641) Źródła obrazków (641) Poznaj formaty grafiki (644) Rozmiar oraz rozdzielczość grafiki (657) Strategia związana z obrazkami (660) Ikona favicon (665) Podsumowanie informacji dotyczących grafiki stron internetowych (668) Rozdział 24. Tworzenie obrazków na strony internetowe (671) Zapisywanie obrazka w formacie internetowym (671) Praca z przezroczystością (676) Wskazówki dotyczące tworzenia obrazków responsywnych (680) Optymalizacja obrazków (691) Rozdział 25. SVG (703) Rysowanie za pomocą języka XML (705) Funkcjonalność SVG jako XML (713) Narzędzia SVG (718) Wskazówki dotyczące tworzenia plików SVG (720) Responsywne obrazki SVG (724) Dodatek B. Atrybuty globalne HTML5 (753) Dodatek C. Selektory CSS Level 3 i Level 4 (755) Dodatek D. Od HTML+ do HTML5 (759)
Sygnatura czytelni BWEAiI: XII N 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. 150330 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. 118578 N (1 egz.)
Książka
W koszyku
Head First Web Design : edycja polska / Ethan Watrall, Jeff Siarto ; [tłumaczenie: Anna Trojan]. - Gliwice : Helion, cop. 2010. - 496 stron : ilustracje (głównie kolorowe) ; 23 cm.
U dołu strony tytułowej i okładki nazwa wydawcy oryginału: O'Reilly.
Na okładce: Poznaj sekrety tworzenia efektywnych stron WWW, spełniających wszelkie wymagania dostępności i użyteczności [...].
Indeks.
1 placówka posiada w zbiorach tę pozycję. Rozwiń informację, by zobaczyć szczegóły.
Wypożyczalnia
Są egzemplarze dostępne do wypożyczenia: sygn. 124758 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