Efektywny Python 59 sposobow na lepszy kod.pdf

(803 KB) Pobierz
Tytuł oryginału: Effective Python: 59 Specific Ways to Write Better Python (Effective Software
Development Series)
Tłumaczenie: Robert Górczyński
ISBN: 978-83-283-1540-2
Authorized translation from the English language edition, entitled: EFFECTIVE PYTHON: 59 SPECIFIC
WAYS TO WRITE BETTER PYTHON; ISBN 0134034287; by Brett Slatkin; published by Pearson
Education, Inc, publishing as Addison Wesley Professional.
Copyright © 2015 by Pearson Education, Inc.
All rights reserved. No part of this book may by reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from Pearson Education, Inc.
Polish language edition published by HELION S.A. Copyright © 2015.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/efepyt
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
Wprowadzenie ................................................................................ 11
Podzi kowania ............................................................................... 15
O autorze ....................................................................................... 17
Rozdzia 1. Programowanie zgodne z duchem Pythona ................... 19
Sposób 1.
Sposób 2.
Sposób 3.
Sposób 4.
Sposób 5.
Sposób 6.
Sposób 7.
Sposób 8.
Sposób 9.
Ustalenie u ywanej wersji Pythona ........................................... 19
Stosuj styl PEP 8 ...................................................................... 21
Ró nice mi dzy typami bytes, str i unicode ............................... 23
Decyduj si na funkcje pomocnicze
zamiast na skomplikowane wyra enia ....................................... 26
Umiej tnie podziel sekwencje .................................................... 29
Unikaj u ycia indeksów pocz tek, koniec
i warto ci kroku w pojedynczej operacji podzia u ...................... 31
U ywaj list sk adanych zamiast funkcji map() i filter() ................... 33
Unikaj wi cej ni dwóch wyra e na li cie sk adanej .................... 35
Rozwa u ycie generatora wyra e dla du ych list sk adanych ....36
Sposób 10. Preferuj u ycie funkcji enumerate() zamiast range() ...................... 38
Sposób 11. U ycie funkcji zip() do równoczesnego przetwarzania iteratorów ... 39
Sposób 12. Unikaj bloków else po p tlach for i while ................................... 41
Sposób 13. Wykorzystanie zalet wszystkich bloków
w konstrukcji try-except-else-finally ......................................... 44
Rozdzia 2. Funkcje ....................................................................... 47
Sposób 14. Preferuj wyj tki zamiast zwrotu warto ci None .......................... 47
Sposób 15. Zobacz, jak domkni cia wspó dzia aj z zakresem zmiennej ...... 49
Sposób 16. Rozwa u ycie generatorów, zamiast zwraca listy ...................... 54
Kup książkę
Poleć książkę
8
Spis tre ci
Sposób 17. Podczas iteracji przez argumenty
zachowuj postaw defensywn .................................................. 56
Sposób 18. Zmniejszenie wizualnego zagmatwania
za pomoc zmiennej liczby argumentów pozycyjnych ................ 61
Sposób 19. Zdefiniowanie zachowania opcjonalnego
za pomoc argumentów w postaci s ów kluczowych .................. 63
Sposób 20. U ycie None i docstring w celu
dynamicznego okre lenia argumentów domy lnych ................... 66
Sposób 21. Wymuszaj czytelno kodu,
stosuj c jedynie argumenty w postaci s ów kluczowych ............ 69
Rozdzia 3. Klasy i dziedziczenie .................................................... 73
Sposób 22. Preferuj klasy pomocnicze zamiast s owników i krotek .............. 73
Sposób 23. Dla prostych interfejsów akceptuj funkcje zamiast klas ............ 78
Sposób 24. U ycie polimorfizmu @classmethod
w celu ogólnego tworzenia obiektów .......................................... 82
Sposób 25. Inicjalizacja klasy nadrz dnej za pomoc wywo ania super() ...... 87
Sposób 26. Wielokrotnego dziedziczenia
u ywaj jedynie w klasach narz dziowych .................................. 91
Sposób 27. Preferuj atrybuty publiczne zamiast prywatnych ....................... 95
Sposób 28. Dziedziczenie po collections.abc
w kontenerach typów niestandardowych ................................... 99
Rozdzia 4. Metaklasy i atrybuty ................................................... 105
Sposób 29. U ywaj zwyk ych atrybutów zamiast metod typu getter i setter ...105
Sposób 30. Rozwa u ycie @property zamiast refaktoryzacji atrybutów ..... 109
Sposób 31. Stosuj deskryptory, aby wielokrotnie wykorzystywa
metody udekorowane przez @property .................................... 113
Sposób 32. U ywaj metod __getattr__(), __getattribute__() i __setattr__()
dla opó nionych atrybutów ..................................................... 117
Sposób 33. Sprawdzaj podklasy za pomoc metaklas ................................ 122
Sposób 34. Rejestruj istniej ce klasy wraz z metaklasami ......................... 124
Sposób 35. Adnotacje atrybutów klas dodawaj za pomoc metaklas .......... 128
Rozdzia 5. Wspó bie no
i równoleg o
..................................... 131
Sposób 36. U ywaj modu u subprocess
do zarz dzania procesami potomnymi ..................................... 132
Sposób 37. U ycie w tków dla operacji blokuj cych wej cie-wyj cie,
unikanie równoleg o ci ........................................................... 136
Sposób 38. U ywaj klasy Lock, aby unika stanu wy cigu w w tkach ....... 140
Sposób 39. U ywaj klasy Queue do koordynacji pracy mi dzy w tkami ..... 143
Kup książkę
Poleć książkę
Spis tre ci
9
Sposób 40. Rozwa u ycie wspó programów
w celu jednoczesnego wykonywania wielu funkcji ................... 150
Sposób 41. Rozwa u ycie concurrent.futures(),
aby otrzyma prawdziw równoleg o
.................................... 158
Rozdzia 6. Wbudowane modu y ....................................................163
Sposób 42. Dekoratory funkcji definiuj za pomoc functools.wraps ........... 163
Sposób 43. Rozwa u ycie polece contextlib i with
w celu uzyskania wielokrotnego u ycia konstrukcji try-finally .... 166
Sposób 44. Niezawodne u ycie pickle wraz z copyreg ................................ 169
Sposób 45. Podczas obs ugi czasu lokalnego u ywaj modu u datetime
zamiast time ........................................................................... 174
Sposób 46. U ywaj wbudowanych algorytmów i struktur danych .............. 178
Sposób 47. Gdy wa na jest precyzja, u ywaj modu u decimal ................... 183
Sposób 48. Kiedy szuka modu ów opracowanych przez spo eczno
? ....... 185
Rozdzia 7. Wspó praca .................................................................187
Sposób 49. Dla ka dej funkcji, klasy i modu u utwórz docstring ............... 187
Sposób 50. U ywaj pakietów do organizacji modu ów
i dostarczania stabilnych API .................................................. 191
Sposób 51. Zdefiniuj g ówny wyj tek Exception
w celu odizolowania komponentu wywo uj cego od API ........... 196
Sposób 52. Zobacz, jak przerwa kr g zale no ci ...................................... 199
Sposób 53. U ywaj rodowisk wirtualnych
dla odizolowanych i powtarzalnych zale no ci ......................... 204
Rozdzia 8. Produkcja ...................................................................211
Sposób 54. Rozwa u ycie kodu o zasi gu modu u
w celu konfiguracji rodowiska wdro enia ............................... 211
Sposób 55. U ywaj ci gów tekstowych repr
do debugowania danych wyj ciowych ..................................... 214
Sposób 56. Testuj wszystko za pomoc unittest ........................................ 217
Sposób 57. Rozwa interaktywne usuwanie b dów za pomoc pdb ........... 220
Sposób 58. Przed optymalizacj przeprowadzaj profilowanie ...................... 222
Sposób 59. Stosuj modu tracemalloc, aby pozna sposób u ycia pami ci
i wykry jej wycieki ................................................................. 226
Skorowidz ........................................................................................ 229
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin