Facebook - konwersja
  • promocja

Python. Receptury. Wydanie III - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
31 stycznia 2014
Format ebooka:
EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Python. Receptury. Wydanie III - ebook

Python to język programowania z ponad 20-letnią historią. Opracowany na początku lat 90. ubiegłego wieku, błyskawicznie zdobył sympatię programistów. Jest używany zarówno do pisania przydatnych skryptów czy małych narzędzi, jak i do pracy nad dużymi projektami. Korzysta z automatycznego zarządzania pamięcią oraz pozwala na podejście obiektowe i funkcyjne do tworzonego programu. Wokół języka Python skupiona jest bardzo silna społeczność programistów.

Ta książka to sprawdzone źródło informacji na temat Pythona i jego najczęstszych zastosowań. Należy ona do cenionej serii „Receptury”, w której znajdziesz najlepsze sposoby rozwiązywania problemów. Przekonaj się, jak wydajnie operować na strukturach danych, łańcuchach znaków, tekście i liczbach. Zobacz, jak korzystać z iteratorów i generatorów. Ponadto naucz się tworzyć własne klasy i funkcje oraz sprawdź, jak uzyskać dostęp do plików i sieci. Te i dziesiątki innych receptur opisano w tej książce. To obowiązkowa pozycja na półce każdego programisty pracującego z językiem Python.

Dzięki tej książce:

  • rozwiążesz w optymalny sposób najczęstsze problemy
  • napiszesz program korzystający z puli wątków
  • będziesz lepszym programistą Pythona!

Najlepsze rozwiązania typowych problemów!

Spis treści

Przedmowa (11)

1. Algorytmy i struktury danych (15)

  • 1.1. Wypakowywanie sekwencji do odrębnych zmiennych (15)
  • 1.2. Wypakowywanie elementów z obiektów iterowalnych o dowolnej długości (16)
  • 1.3. Zachowywanie ostatnich N elementów (19)
  • 1.4. Wyszukiwanie N największych lub najmniejszych elementów (20)
  • 1.5. Tworzenie kolejki priorytetowej (22)
  • 1.6. Odwzorowywanie kluczy na różne wartości ze słownika (24)
  • 1.7. Określanie uporządkowania w słownikach (25)
  • 1.8. Obliczenia na danych ze słowników (26)
  • 1.9. Wyszukiwanie identycznych danych w dwóch słownikach (28)
  • 1.10. Usuwanie powtórzeń z sekwencji przy zachowaniu kolejności elementów (29)
  • 1.11. Nazywanie wycinków (30)
  • 1.12. Określanie najczęściej występujących w sekwencji elementów (31)
  • 1.13. Sortowanie list słowników według wspólnych kluczy (33)
  • 1.14. Sortowanie obiektów bez wbudowanej obsługi porównań (34)
  • 1.15. Grupowanie rekordów na podstawie wartości pola (35)
  • 1.16. Filtrowanie elementów sekwencji (37)
  • 1.17. Pobieranie podzbioru słownika (39)
  • 1.18. Odwzorowywanie nazw na elementy sekwencji (40)
  • 1.19. Jednoczesne przekształcanie i redukowanie danych (42)
  • 1.20. Łączenie wielu odwzorowań w jedno (43)

2. Łańcuchy znaków i tekst (47)

  • 2.1. Podział łańcuchów znaków po wykryciu dowolnego z różnych ograniczników (47)
  • 2.2. Dopasowywanie tekstu do początkowej lub końcowej części łańcucha znaków (48)
  • 2.3. Dopasowywanie łańcuchów znaków za pomocą symboli wieloznacznych powłoki (50)
  • 2.4. Dopasowywanie i wyszukiwanie wzorców tekstowych (51)
  • 2.5. Wyszukiwanie i zastępowanie tekstu (54)
  • 2.6. Wyszukiwanie i zastępowanie tekstu bez uwzględniania wielkości liter (55)
  • 2.7. Tworzenie wyrażeń regularnych w celu uzyskania najkrótszego dopasowania (56)
  • 2.8. Tworzenie wyrażeń regularnych dopasowywanych do wielowierszowych wzorców (57)
  • 2.9. Przekształcanie tekstu w formacie Unicode na postać standardową (58)
  • 2.10. Używanie znaków Unicode w wyrażeniach regularnych (60)
  • 2.11. Usuwanie niepożądanych znaków z łańcuchów (61)
  • 2.12. Zapewnianie poprawności i porządkowanie tekstu (62)
  • 2.13. Wyrównywanie łańcuchów znaków (64)
  • 2.14. Łączenie łańcuchów znaków (66)
  • 2.15. Podstawianie wartości za zmienne w łańcuchach znaków (68)
  • 2.16. Formatowanie tekstu w celu uzyskania określonej liczby kolumn (70)
  • 2.17. Obsługiwanie encji HTML-a i XML-a w tekście (71)
  • 2.18. Podział tekstu na tokeny (73)
  • 2.19. Tworzenie prostego rekurencyjnego parsera zstępującego (75)
  • 2.20. Przeprowadzanie operacji tekstowych na łańcuchach bajtów (83)

3. Liczby, daty i czas (87)

  • 3.1. Zaokrąglanie liczb (87)
  • 3.2. Przeprowadzanie dokładnych obliczeń na liczbach dziesiętnych (88)
  • 3.3. Formatowanie liczb w celu ich wyświetlenia (90)
  • 3.4. Stosowanie dwójkowych, ósemkowych i szesnastkowych liczb całkowitych (92)
  • 3.5. Pakowanie do bajtów i wypakowywanie z bajtów dużych liczb całkowitych (93)
  • 3.6. Przeprowadzanie obliczeń na liczbach zespolonych (95)
  • 3.7. Nieskończoność i wartości NaN (96)
  • 3.8. Obliczenia z wykorzystaniem ułamków (98)
  • 3.9. Obliczenia z wykorzystaniem dużych tablic liczbowych (99)
  • 3.10. Przeprowadzanie operacji na macierzach i z zakresu algebry liniowej (102)
  • 3.11. Losowe pobieranie elementów (103)
  • 3.12. Przekształcanie dni na sekundy i inne podstawowe konwersje związane z czasem (105)
  • 3.13. Określanie daty ostatniego piątku (107)
  • 3.14. Określanie przedziału dat odpowiadającego bieżącemu miesiącowi (108)
  • 3.15. Przekształcanie łańcuchów znaków na obiekty typu datetime (110)
  • 3.16. Manipulowanie datami z uwzględnieniem stref czasowych (111)

4. Iteratory i generatory (113)

  • 4.1. Ręczne korzystanie z iteratora (113)
  • 4.2. Delegowanie procesu iterowania (114)
  • 4.3. Tworzenie nowych wzorców iterowania z wykorzystaniem generatorów (115)
  • 4.4. Implementowanie protokołu iteratora (117)
  • 4.5. Iterowanie w odwrotnej kolejności (119)
  • 4.6. Definiowanie funkcji generatorów z dodatkowym stanem (120)
  • 4.7. Pobieranie wycinków danych zwracanych przez iterator (121)
  • 4.8. Pomijanie pierwszej części obiektu iterowalnego (122)
  • 4.9. Iterowanie po wszystkich możliwych kombinacjach lub permutacjach (124)
  • 4.10. Przechodzenie po parach indeks - wartość sekwencji (125)
  • 4.11. Jednoczesne przechodzenie po wielu sekwencjach (127)
  • 4.12. Przechodzenie po elementach z odrębnych kontenerów (129)
  • 4.13. Tworzenie potoków przetwarzania danych (130)
  • 4.14. Przekształcanie zagnieżdżonych sekwencji na postać jednowymiarową (133)
  • 4.15. Przechodzenie po scalonych posortowanych obiektach iterowalnych zgodnie z kolejnością sortowania (134)
  • 4.16. Zastępowanie nieskończonych pętli while iteratorem (135)

5. Pliki i operacje wejścia-wyjścia (137)

  • 5.1. Odczyt i zapis danych tekstowych (137)
  • 5.2. Zapisywanie danych z funkcji print() do pliku (139)
  • 5.3. Stosowanie niestandardowych separatorów lub końca wiersza w funkcji print() (140)
  • 5.4. Odczyt i zapis danych binarnych (141)
  • 5.5. Zapis danych do pliku, który nie istnieje (142)
  • 5.6. Wykonywanie operacji wejścia-wyjścia na łańcuchach (143)
  • 5.7. Odczytywanie i zapisywanie skompresowanych plików z danymi (144)
  • 5.8. Przechodzenie po rekordach o stałej wielkości (145)
  • 5.9. Wczytywanie danych binarnych do zmiennego bufora (146)
  • 5.10. Odwzorowywanie plików binarnych w pamięci (148)
  • 5.11. Manipulowanie ścieżkami (150)
  • 5.12. Sprawdzanie, czy plik istnieje (151)
  • 5.13. Pobieranie listy zawartości katalogu (152)
  • 5.14. Nieuwzględnianie kodowania nazw plików (153)
  • 5.15. Wyświetlanie nieprawidłowych nazw plików (154)
  • 5.16. Dodawanie lub zmienianie kodowania otwartego pliku (156)
  • 5.17. Zapisywanie bajtów w pliku tekstowym (158)
  • 5.18. Umieszczanie deskryptora istniejącego pliku w obiekcie pliku (159)
  • 5.19. Tworzenie tymczasowych plików i katalogów (160)
  • 5.20. Komunikowanie z portami szeregowymi (162)
  • 5.21. Serializowanie obiektów Pythona (163)

6. Kodowanie i przetwarzanie danych (167)

  • 6.1. Wczytywanie i zapisywanie danych CSV (167)
  • 6.2. Wczytywanie i zapisywanie danych w formacie JSON (170)
  • 6.3. Parsowanie prostych danych w XML-u (174)
  • 6.4. Stopniowe parsowanie bardzo dużych plików XML (176)
  • 6.5. Przekształcanie słowników na format XML (179)
  • 6.6. Parsowanie, modyfikowanie i ponowne zapisywanie dokumentów XML (181)
  • 6.7. Parsowanie dokumentów XML z przestrzeniami nazw (183)
  • 6.8. Komunikowanie się z relacyjnymi bazami danych (185)
  • 6.9. Dekodowanie i kodowanie cyfr w systemie szesnastkowym (187)
  • 6.10. Dekodowanie i kodowanie wartości w formacie Base64 (188)
  • 6.11. Odczyt i zapis tablic binarnych zawierających struktury (188)
  • 6.12. Wczytywanie zagnieżdżonych struktur binarnych o zmiennej długości (192)
  • 6.13. Podsumowywanie danych i obliczanie statystyk (200)

7. Funkcje (203)

  • 7.1. Pisanie funkcji przyjmujących dowolną liczbę argumentów (203)
  • 7.2. Tworzenie funkcji przyjmujących argumenty podawane wyłącznie za pomocą słów kluczowych (204)
  • 7.3. Dołączanie metadanych z informacjami do argumentów funkcji (205)
  • 7.4. Zwracanie wielu wartości przez funkcje (206)
  • 7.5. Definiowanie funkcji z argumentami domyślnymi (207)
  • 7.6. Definiowanie funkcji anonimowych (wewnątrzwierszowych) (210)
  • 7.7. Pobieranie wartości zmiennych w funkcjach anonimowych (211)
  • 7.8. Uruchamianie n-argumentowej jednostki wywoływalnej z mniejszą liczbą argumentów (212)
  • 7.9. Zastępowanie klas z jedną metodą funkcjami (215)
  • 7.10. Dodatkowy stan w funkcjach wywoływanych zwrotnie (216)
  • 7.11. Wewnątrzwierszowe zapisywanie wywoływanych zwrotnie funkcji (219)
  • 7.12. Dostęp do zmiennych zdefiniowanych w domknięciu (221)

8. Klasy i obiekty (225)

  • 8.1. Modyfikowanie tekstowej reprezentacji obiektów (225)
  • 8.2. Modyfikowanie formatowania łańcuchów znaków (226)
  • 8.3. Dodawanie do obiektów obsługi protokołu zarządzania kontekstem (228)
  • 8.4. Zmniejszanie zużycia pamięci przy tworzeniu dużej liczby obiektów (230)
  • 8.5. Hermetyzowanie nazw w klasie (231)
  • 8.6. Tworzenie atrybutów zarządzanych (232)
  • 8.7. Wywoływanie metod klasy bazowej (236)
  • 8.8. Rozszerzanie właściwości w klasie pochodnej (240)
  • 8.9. Tworzenie nowego rodzaju atrybutów klasy lub egzemplarza (243)
  • 8.10. Stosowanie właściwości obliczanych w leniwy sposób (246)
  • 8.11. Upraszczanie procesu inicjowania struktur danych (248)
  • 8.12. Definiowanie interfejsu lub abstrakcyjnej klasy bazowej (251)
  • 8.13. Tworzenie modelu danych lub systemu typów (254)
  • 8.14. Tworzenie niestandardowych kontenerów (259)
  • 8.15. Delegowanie obsługi dostępu do atrybutów (262)
  • 8.16. Definiowanie więcej niż jednego konstruktora w klasie (266)
  • 8.17. Tworzenie obiektów bez wywoływania metody __init__() (267)
  • 8.18. Rozszerzanie klas za pomocą klas mieszanych (269)
  • 8.19. Implementowanie obiektów ze stanem lub maszyn stanowych (273)
  • 8.20. Wywoływanie metod obiektu na podstawie nazwy w łańcuchu znaków (278)
  • 8.21. Implementowanie wzorca odwiedzający (279)
  • 8.22. Implementowanie wzorca odwiedzający bez stosowania rekurencji (283)
  • 8.23. Zarządzanie pamięcią w cyklicznych strukturach danych (288)
  • 8.24. Tworzenie klas z obsługą porównań (291)
  • 8.25. Tworzenie obiektów zapisywanych w pamięci podręcznej (293)

9. Metaprogramowanie (297)

  • 9.1. Tworzenie nakładek na funkcje (297)
  • 9.2. Zachowywanie metadanych funkcji przy pisaniu dekoratorów (299)
  • 9.3. Pobieranie pierwotnej funkcji z nakładki (300)
  • 9.4. Tworzenie dekoratorów przyjmujących argumenty (302)
  • 9.5. Definiowanie dekoratora z atrybutami dostosowywanymi przez użytkownika (303)
  • 9.6. Definiowanie dekoratorów przyjmujących opcjonalny argument (306)
  • 9.7. Wymuszanie sprawdzania typów w funkcji za pomocą dekoratora (307)
  • 9.8. Definiowanie dekoratorów jako elementów klasy (311)
  • 9.9. Definiowanie dekoratorów jako klas (312)
  • 9.10. Stosowanie dekoratorów do metod klasy i metod statycznych (315)
  • 9.11. Pisanie dekoratorów, które dodają argumenty do funkcji w nakładkach (316)
  • 9.12. Stosowanie dekoratorów do poprawiania definicji klas (319)
  • 9.13. Używanie metaklasy do kontrolowania tworzenia obiektów (320)
  • 9.14. Sprawdzanie kolejności definiowania atrybutów klasy (323)
  • 9.15. Definiowanie metaklas przyjmujących argumenty opcjonalne (325)
  • 9.16. Sprawdzanie sygnatury na podstawie argumentów *args i **kwargs (327)
  • 9.17. Wymuszanie przestrzegania konwencji pisania kodu w klasie (330)
  • 9.18. Programowe definiowanie klas (332)
  • 9.19. Inicjowanie składowych klasy w miejscu definicji klasy (335)
  • 9.20. Przeciążanie metod z wykorzystaniem uwag do funkcji (337)
  • 9.21. Unikanie powtarzających się metod właściwości (342)
  • 9.22. Definiowanie w łatwy sposób menedżerów kontekstu (344)
  • 9.23. Wykonywanie kodu powodującego lokalne efekty uboczne (346)
  • 9.24. Parsowanie i analizowanie kodu źródłowego Pythona (348)
  • 9.25. Dezasemblacja kodu bajtowego Pythona (351)

10. Moduły i pakiety (355)

  • 10.1. Tworzenie hierarchicznych pakietów z modułami (355)
  • 10.2. Kontrolowanie importowania wszystkich symboli (356)
  • 10.3. Importowanie modułów podrzędnych z pakietu za pomocą nazw względnych (357)
  • 10.4. Podział modułu na kilka plików (358)
  • 10.5. Tworzenie odrębnych katalogów z importowanym kodem z jednej przestrzeni nazw (361)
  • 10.6. Ponowne wczytywanie modułów (362)
  • 10.7. Umożliwianie wykonywania kodu z katalogu lub pliku zip jako głównego skryptu (364)
  • 10.8. Wczytywanie pliku z danymi z pakietu (365)
  • 10.9. Dodawanie katalogów do zmiennej sys.path (366)
  • 10.10. Importowanie modułów na podstawie nazwy z łańcucha znaków (367)
  • 10.11. Wczytywanie modułów ze zdalnego komputera z wykorzystaniem haków w poleceniu importu (368)
  • 10.12. Modyfikowanie modułów w trakcie importowania (382)
  • 10.13. Instalowanie pakietów tylko na własny użytek (384)
  • 10.14. Tworzenie nowego środowiska Pythona (385)
  • 10.15. Rozpowszechnianie pakietów (386)

11. Sieci i rozwijanie aplikacji sieciowych (389)

  • 11.1. Interakcja z usługami HTTP za pomocą kodu klienta (389)
  • 11.2. Tworzenie serwera TCP (393)
  • 11.3. Tworzenie serwera UDP (395)
  • 11.4. Generowanie przedziałów adresów IP na podstawie adresu CIDR (397)
  • 11.5. Tworzenie prostego interfejsu opartego na architekturze REST (399)
  • 11.6. Obsługa prostych zdalnych wywołań procedur za pomocą protokołu XML-RPC (403)
  • 11.7. Prosta komunikacja między interpreterami (405)
  • 11.8. Implementowanie zdalnych wywołań procedur (407)
  • 11.9. Proste uwierzytelnianie klientów (410)
  • 11.10. Dodawanie obsługi protokołu SSL do usług sieciowych (412)
  • 11.11. Przekazywanie deskryptora pliku gniazda między procesami (417)
  • 11.12. Operacje wejścia-wyjścia sterowane zdarzeniami (422)
  • 11.13. Wysyłanie i odbieranie dużych tablic (427)

12. Współbieżność (429)

  • 12.1. Uruchamianie i zatrzymywanie wątków (429)
  • 12.2. Ustalanie, czy wątek rozpoczął pracę (432)
  • 12.3. Komunikowanie się między wątkami (434)
  • 12.4. Blokowanie sekcji krytycznej (439)
  • 12.5. Blokowanie z unikaniem zakleszczenia (441)
  • 12.6. Zapisywanie stanu wątku (445)
  • 12.7. Tworzenie puli wątków (446)
  • 12.8. Proste programowanie równoległe (449)
  • 12.9. Jak radzić sobie z mechanizmem GIL (i przestać się nim martwić) (453)
  • 12.10. Definiowanie zadań działających jak aktory (456)
  • 12.11. Przesyłanie komunikatów w modelu publikuj-subskrybuj (459)
  • 12.12. Używanie generatorów zamiast wątków (462)
  • 12.13. Odpytywanie wielu kolejek wątków (468)
  • 12.14. Uruchamianie procesu demona w systemie Unix (471)

13. Skrypty narzędziowe i zarządzanie systemem (475)

  • 13.1. Przyjmowanie danych wejściowych skryptu za pomocą przekierowań, potoków lub plików wejściowych (475)
  • 13.2. Kończenie pracy programu wyświetleniem komunikatu o błędzie (476)
  • 13.3. Parsowanie opcji z wiersza poleceń (477)
  • 13.4. Prośba o podanie hasła w czasie wykonywania programu (479)
  • 13.5. Pobieranie rozmiarów terminala (480)
  • 13.6. Wywoływanie zewnętrznych poleceń i pobieranie danych wyjściowych (481)
  • 13.7. Kopiowanie lub przenoszenie plików i katalogów (482)
  • 13.8. Tworzenie i wypakowywanie archiwów (484)
  • 13.9. Wyszukiwanie plików na podstawie nazwy (485)
  • 13.10. Wczytywanie plików konfiguracyjnych (486)
  • 13.11. Dodawanie mechanizmu rejestrowania operacji do prostych skryptów (489)
  • 13.12. Dodawanie obsługi rejestrowania do bibliotek (491)
  • 13.13. Tworzenie stopera (493)
  • 13.14. Określanie limitów wykorzystania pamięci i procesora (494)
  • 13.15. Uruchamianie przeglądarki internetowej (495)

14. Testowanie, debugowanie i wyjątki (497)

  • 14.1. Testowanie danych wyjściowych wysyłanych do strumienia stdout (497)
  • 14.2. Podstawianie obiektów w testach jednostkowych (498)
  • 14.3. Sprawdzanie wystąpienia wyjątków w testach jednostkowych (501)
  • 14.4. Zapisywanie danych wyjściowych testu w pliku (503)
  • 14.5. Pomijanie testów lub przewidywanie ich niepowodzenia (504)
  • 14.6. Obsługa wielu wyjątków (505)
  • 14.7. Przechwytywanie wszystkich wyjątków (507)
  • 14.8. Tworzenie niestandardowych wyjątków (508)
  • 14.9. Zgłaszanie wyjątku w odpowiedzi na wystąpienie innego wyjątku (510)
  • 14.10. Ponowne zgłaszanie ostatniego wyjątku (512)
  • 14.11. Wyświetlanie komunikatów ostrzegawczych (513)
  • 14.12. Debugowanie prostych awarii programu (514)
  • 14.13. Profilowanie i pomiar czasu pracy programów (516)
  • 14.14. Przyspieszanie działania programów (518)

15. Rozszerzenia w języku C (525)

  • 15.1. Dostęp do kodu w języku C za pomocą modułu ctypes (526)
  • 15.2. Pisanie prostych modułów rozszerzeń w języku C (532)
  • 15.3. Pisanie funkcji rozszerzeń manipulujących tablicami (535)
  • 15.4. Zarządzanie nieprzejrzystymi wskaźnikami w modułach rozszerzeń w języku C (538)
  • 15.5. Definiowanie i eksportowanie interfejsów API języka C w modułach rozszerzeń (540)
  • 15.6. Wywoływanie kodu Pythona w kodzie w języku C (544)
  • 15.7. Zwalnianie blokady GIL w rozszerzeniach w języku C (548)
  • 15.8. Jednoczesne wykonywanie wątków z kodu w językach C i Python (549)
  • 15.9. Umieszczanie kodu w języku C w nakładkach opartych na narzędziu Swig (550)
  • 15.10. Używanie Cythona do tworzenia nakładek na istniejący kod w języku C (555)
  • 15.11. Używanie Cythona do pisania wydajnych operacji na tablicach (560)
  • 15.12. Przekształcanie wskaźnika do funkcji w jednostkę wywoływalną (564)
  • 15.13. Przekazywanie łańcuchów znaków zakończonych symbolem NULL do bibliotek języka C (565)
  • 15.14. Przekazywanie łańcuchów znaków Unicode do bibliotek języka C (569)
  • 15.15. Przekształcanie łańcuchów znaków z języka C na ich odpowiedniki z Pythona (573)
  • 15.16. Używanie łańcuchów znaków o nieznanym kodowaniu pobieranych z języka C (574)
  • 15.17. Przekazywanie nazw plików do rozszerzeń w języku C (577)
  • 15.18. Przekazywanie otwartych plików do rozszerzeń w języku C (578)
  • 15.19. Wczytywanie w języku C danych z obiektów podobnych do plików (579)
  • 15.20. Pobieranie obiektów iterowalnych w języku C (581)
  • 15.21. Diagnozowanie błędów segmentacji (582)

A. Dalsza lektura (585)

Skorowidz (587)

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-246-8181-5
Rozmiar pliku: 2,5 MB

BESTSELLERY

Kategorie: