Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00035 005333 19042164 na godz. na dobę w sumie
Python ninja. 70 sekretnych receptur i taktyk programistycznych - książka
Python ninja. 70 sekretnych receptur i taktyk programistycznych - książka
Autor: Liczba stron: 320
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-5317-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> python - programowanie
Porównaj ceny (książka, ebook (-35%), audiobook).

Python jest językiem, którego można się nauczyć stosunkowo łatwo - a potem dość szybko przejść do praktyki. To duża zaleta: nic tak nie motywuje do dalszej pracy, jak pierwsze sukcesy na wczesnym etapie. Niemniej wielu nawet dość doświadczonych programistów Pythona nie wykorzystuje najlepszych cech tego języka. Ich aplikacje mogłyby być bardziej niezawodne, a kod - czystszy. Co gorsza, wiele ze znakomitych narzędzi i technologii powiązanych z Pythonem nie przebiło się do ogólnej świadomości społeczności skupionej wokół języka, przez co nie wykorzystuje się w pełni ich możliwości.

Celem tej książki jest rozwiązanie tego problemu. To rzecz przeznaczona dla programistów Pythona, którzy chcą znacząco poprawić jakość swoich aplikacji. Wyjaśniono tu mało znane lub błędnie rozumiane aspekty implementacji modułów standardowej biblioteki Pythona. Starannie opisano dekoratory, menedżery kontekstu, współprogramy i generatory oraz szczegóły wewnętrznego działania metod specjalnych. Pokazano alternatywne powłoki interaktywne, które mogą okazać się dużym ułatwieniem podczas kodowania. Ciekawym elementem książki jest prezentacja projektu PyPy, dzięki któremu można zapewnić współbieżność kodu. Nie zabrakło przydatnych informacji o tworzeniu dokumentacji kodu Pythona.

Dzięki tej książce między innymi:

Python - łatwiejszy, niż sądzisz, potężniejszy, niż myślisz!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Secret Recipes of the Python Ninja: Over 70 recipes that uncover powerful programming tactics in Python Tłumaczenie: Agnieszka Górczyńska ISBN: 978-83-283-5317-6 Copyright © Packt Publishing 2018. First published in the English language under the title ‘Secret Recipes of the Python Ninja – (9781788294874)’. Polish edition copyright © 2019 by Helion SA All rights reserved. All rights reserved. No part of this book may be 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 the Publisher. 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 Helion SA 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 Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Helion SA 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/pytnin Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/pytnin.zip Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:258)ci Przedmowa O autorze O recenzencie Wprowadzenie Rozdzia(cid:239) 1. Praca z modu(cid:239)ami Pythona Wprowadzenie U(cid:285)ywanie i importowanie modu(cid:239)ów i przestrzeni nazw Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Implementowanie wirtualnego (cid:258)rodowiska Pythona Zaczynamy Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Opcje dost(cid:218)pne podczas instalowania pakietu Pythona Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Wykorzystanie pliku wymaga(cid:241) i rozwi(cid:200)zywanie konfliktów Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? U(cid:285)ywanie lokalnych poprawek i plików ogranicze(cid:241) Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? 9 11 12 13 17 17 18 20 21 22 25 26 28 29 29 29 30 31 32 32 33 34 34 34 36 36 Kup książkęPoleć książkę Spis tre(cid:286)ci Praca z pakietami Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Tworzenie pakietów i plików w formacie wheel Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Porównanie kodu (cid:283)ród(cid:239)owego z kodem bajtowym Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Tworzenie pakietów modu(cid:239)u i odwo(cid:239)ywanie si(cid:218) do nich Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Pliki binarne dla konkretnego systemu operacyjnego Jak to zrobi(cid:202)? Co dalej? Umieszczanie programu w repozytorium PyPI Zaczynamy Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Pakowanie projektu Jak to zrobi(cid:202)? Przekazanie pakietu do repozytorium PyPI Zaczynamy Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Rozdzia(cid:239) 2. Zastosowanie interpretera Pythona Wprowadzenie Uruchamianie (cid:258)rodowiska Pythona Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Opcje polecenia python Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Zobacz równie(cid:285) Praca ze zmiennymi (cid:258)rodowiskowymi Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Definiowanie skryptu jako wykonywalnego Jak to zrobi(cid:202)? Co dalej? Zmiana sposobu uruchamiania interpretera interaktywnego Jak to zrobi(cid:202)? Zobacz równie(cid:285) 4 36 36 38 38 39 40 40 41 41 41 42 42 42 43 44 45 45 47 50 51 51 52 52 55 55 56 56 57 57 59 59 60 60 60 61 61 61 65 65 66 66 69 69 69 70 70 70 Kup książkęPoleć książkę Alternatywne implementacje Pythona Jak to zrobi(cid:202)? Co dalej? Instalowanie Pythona w Windowsie Zaczynamy Jak to zrobi(cid:202)? Stosowanie programu uruchamiaj(cid:200)cego Pythona w Windowsie Jak to zrobi(cid:202)? Osadzanie Pythona w innych aplikacjach Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Zastosowanie alternatywnej pow(cid:239)oki Pythona — IPython Zaczynamy Jak to zrobi(cid:202)? Co dalej? Zastosowanie alternatywnej pow(cid:239)oki Pythona — bpython Zaczynamy Jak to zrobi(cid:202)? Co dalej? Zastosowanie alternatywnej pow(cid:239)oki Pythona — DreamPie Zaczynamy Jak to zrobi(cid:202)? Co dalej? Rozdzia(cid:239) 3. Praca z dekoratorami Wprowadzenie Przegl(cid:200)d funkcji Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Wprowadzenie do dekoratorów Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Stosowanie dekoratorów funkcji Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Stosowanie dekoratorów klas Jak to zrobi(cid:202)? Przyk(cid:239)ady dekoratorów Zaczynamy Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Stosowanie modu(cid:239)u decorator Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Zobacz równie(cid:285) Spis tre(cid:286)ci 71 71 72 74 74 75 75 76 76 77 78 78 80 80 83 83 84 84 85 85 86 86 86 87 87 88 88 89 90 90 92 93 94 95 97 97 100 101 101 104 105 108 108 110 111 111 5 Kup książkęPoleć książkę Spis tre(cid:286)ci Rozdzia(cid:239) 4. Zastosowanie kolekcji w Pythonie Wprowadzenie Przegl(cid:200)d dost(cid:218)pnych kontenerów Jak to zrobi(cid:202)? Co dalej? Implementacja nazwanej krotki Jak to zrobi(cid:202)? Co dalej? Implementacja kolejki dwustronnej Jak to zrobi(cid:202)? Implementacja klasy ChainMap Jak to zrobi(cid:202)? Implementacja kolekcji Counter Jak to zrobi(cid:202)? Co dalej? Implementacja klasy OrderedDict Jak to zrobi(cid:202)? Implementacja klasy defaultdict Jak to zrobi(cid:202)? Implementacja klasy UserDict Jak to zrobi(cid:202)? Implementacja klasy UserList Jak to zrobi(cid:202)? Co dalej? Implementacja klasy UserString Jak to zrobi(cid:202)? Usprawnienie kolekcji Pythona Jak to zrobi(cid:202)? Modu(cid:239) collections-extended Zaczynamy Jak to zrobi(cid:202)? Rozdzia(cid:239) 5. Generatory, wspó(cid:239)programy i przetwarzanie równoleg(cid:239)e Sposób dzia(cid:239)ania iteracji w Pythonie Jak to zrobi(cid:202)? Stosowanie modu(cid:239)u itertools Jak to zrobi(cid:202)? Stosowanie funkcji generatora Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Symulowanie wielow(cid:200)tkowo(cid:258)ci za pomoc(cid:200) wspó(cid:239)programów Jak to zrobi(cid:202)? Co dalej? Kiedy nale(cid:285)y stosowa(cid:202) przetwarzanie równoleg(cid:239)e? Jak to zrobi(cid:202)? Co dalej? 6 113 113 114 115 116 119 120 122 124 126 128 129 132 133 135 136 136 139 140 142 143 144 144 145 146 146 147 147 154 155 155 161 162 162 166 166 183 184 184 186 187 188 190 190 191 192 Kup książkęPoleć książkę Rozwidlenie procesu Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? Jak zaimplementowa(cid:202) wielow(cid:200)tkowo(cid:258)(cid:202)? Jak to zrobi(cid:202)? Co dalej? Jak zaimplementowa(cid:202) wieloprocesowo(cid:258)(cid:202)? Jak to zrobi(cid:202)? Co dalej? Rozdzia(cid:239) 6. Praca z modu(cid:239)em math Pythona Stosowanie sta(cid:239)ych i funkcji modu(cid:239)u math Jak to zrobi(cid:202)? Praca z liczbami zespolonymi Jak to zrobi(cid:202)? Usprawnienie pracy z liczbami typu decimal Jak to zrobi(cid:202)? Zwi(cid:218)kszenie dok(cid:239)adno(cid:258)ci za pomoc(cid:200) u(cid:239)amków Jak to zrobi(cid:202)? Praca z liczbami losowymi Jak to zrobi(cid:202)? Stosowanie modu(cid:239)u secrets Jak to zrobi(cid:202)? Implementowanie podstawowych operacji statystycznych Jak to zrobi(cid:202)? Poprawa funkcjonalno(cid:258)ci za pomoc(cid:200) modu(cid:239)u comath Zaczynamy Jak to zrobi(cid:202)? Rozdzia(cid:239) 7. Poprawa wydajno(cid:258)ci dzia(cid:239)ania Pythona za pomoc(cid:200) PyPy Wprowadzenie Co to jest PyPy? Zaczynamy Jak to zrobi(cid:202)? Co dalej? Co to jest RPython? Jak to zrobi(cid:202)? Co dalej? Kilka rzeczywistych przyk(cid:239)adów Jak to zrobi(cid:202)? Co dalej? Rozdzia(cid:239) 8. Dokumenty PEP Wprowadzenie Co to jest PEP? Jak to zrobi(cid:202)? Co dalej? Spis tre(cid:286)ci 192 193 193 194 194 195 199 200 201 203 205 206 206 219 219 221 222 225 226 227 227 231 231 233 233 237 237 237 241 241 242 244 244 247 248 249 251 251 252 256 257 257 257 258 260 7 Kup książkęPoleć książkę Spis tre(cid:286)ci PEP 556 — mechanizm usuwania nieu(cid:285)ytków wykorzystuj(cid:200)cy w(cid:200)tki Zaczynamy Jak to zrobi(cid:202)? Co dalej? PEP 554 — wiele podinterpreterów Jak to zrobi(cid:202)? Jak to dzia(cid:239)a? Co dalej? PEP 551 — wi(cid:218)ksze bezpiecze(cid:241)stwo Zaczynamy Jak to zrobi(cid:202)? PEP 543 — ujednolicone API TLS Jak to zrobi(cid:202)? Co dalej? Rozdzia(cid:239) 9. Dokumentowanie kodu za pomoc(cid:200) LyX Wprowadzenie Techniki i narz(cid:218)dzia Pythona zwi(cid:200)zane z dokumentowaniem kodu Jak to zrobi(cid:202)? Komentarze osadzone i wywo(cid:239)anie dir() Stosowanie komentarzy typu docstring Jak to zrobi(cid:202)? Co dalej? Stosowanie narz(cid:218)dzia PyDoc Jak to zrobi(cid:202)? Raporty w formacie HTML Jak to zrobi(cid:202)? Stosowanie plików w formacie reStructuredText Zaczynamy Jak to zrobi(cid:202)? Stosowanie LaTeX i LyX do przygotowania dokumentacji Zaczynamy Jak to zrobi(cid:202)? Co dalej? Skorowidz 261 261 263 266 267 267 271 272 272 272 274 276 277 278 279 279 280 280 282 284 284 289 292 293 294 294 299 299 299 302 303 304 307 311 8 Kup książkęPoleć książkę 2 Zastosowanie interpretera Pythona W tym rozdziale dowiesz si(cid:218) nieco wi(cid:218)cej na temat interpretera Pythona jako zarówno narz(cid:218)dzia interaktywnego, jak i przeznaczonego do uruchamiania programów Pythona. W szczególno(cid:258)ci omówi(cid:218) nast(cid:218)puj(cid:200)ce zagadnienia: (cid:81) uruchamianie (cid:258)rodowiska Pythona; (cid:81) wykorzystanie opcji polecenia Pythona; (cid:81) praca ze zmiennymi (cid:258)rodowiskowymi; (cid:81) definiowanie skryptu jako wykonywalnego; (cid:81) modyfikacja procesu uruchamiania interpretera interaktywnego; (cid:81) alternatywne implementacje Pythona; (cid:81) instalowanie Pythona w Windowsie; (cid:81) osadzanie Pythona w innych aplikacjach; (cid:81) zastosowanie alternatywnej pow(cid:239)oki Pythona — IPython; (cid:81) zastosowanie alternatywnej pow(cid:239)oki Pythona — bpython; (cid:81) zastosowanie alternatywnej pow(cid:239)oki Pythona — DreamPie. Wprowadzenie Jedn(cid:200) z zalet Pythona jest to, (cid:285)e zalicza si(cid:218) on do j(cid:218)zyków interpretowanych, a nie kompilowa- nych. Dlatego te(cid:285) kod Pythona jest przetwarzany w momencie jego wywo(cid:239)ania i nie musi by(cid:202) wcze(cid:258)niej skompilowany przed u(cid:285)yciem. Dzi(cid:218)ki temu j(cid:218)zyki interpretowane zwykle maj(cid:200) pow(cid:239)ok(cid:218) interaktywn(cid:200) pozwalaj(cid:200)c(cid:200) u(cid:285)ytkownikom na przetestowanie kodu i otrzymanie natych- miastowego wyniku bez konieczno(cid:258)ci tworzenia oddzielnego pliku kodu (cid:283)ród(cid:239)owego. Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych Oczywi(cid:258)cie aby w jak najwi(cid:218)kszym stopniu wykorzysta(cid:202) funkcjonalno(cid:258)(cid:202) j(cid:218)zyka programowania, konieczne jest posiadanie trwa(cid:239)ych plików kodu (cid:283)ród(cid:239)owego. Podczas pracy z pow(cid:239)ok(cid:200) inte- raktywn(cid:200) ca(cid:239)y kod znajduje si(cid:218) w pami(cid:218)ci RAM i zako(cid:241)czenie sesji oznacza definitywn(cid:200) utrat(cid:218) tego kodu. Dlatego pow(cid:239)oka interaktywna to doskona(cid:239)y sposób na szybkie przetestowanie pomys(cid:239)ów, ale zdecydowanie nie chcesz za jej pomoc(cid:200) tworzy(cid:202) pe(cid:239)nych programów. W tym rozdziale poka(cid:285)(cid:218), jak uruchamia(cid:202) programy Pythona, a tak(cid:285)e jak wykorzysta(cid:202) funkcjo- nalno(cid:258)(cid:202) j(cid:218)zyka za pomoc(cid:200) jego pow(cid:239)oki interaktywnej. Porusz(cid:218) równie(cid:285) temat funkcji specjal- nych w systemie operacyjnym Windows. Na ko(cid:241)cu przedstawi(cid:218) wybrane alternatywne pow(cid:239)oki Pythona, które by(cid:202) mo(cid:285)e zechcesz wypróbowa(cid:202). Uruchamianie (cid:258)rodowiska Pythona Domy(cid:258)lnie przy instalacji Pythona do systemowej (cid:258)cie(cid:285)ki dost(cid:218)pu dodawany jest katalog zawie- raj(cid:200)cy interpreter Pythona. Dzi(cid:218)ki temu wpisanie w wierszu polecenia python wywo(cid:239)ywa(cid:202) b(cid:218)dzie interpreter tego j(cid:218)zyka. To polecenie jest najcz(cid:218)(cid:258)ciej u(cid:285)ywane do uruchamiania skryptów. Przy czym niekiedy wymagane jest uruchomienie okre(cid:258)lonej wersji Pythona dla konkretnego programu. Jak to zrobi(cid:202)? 1. Najprostsza posta(cid:202) polecenia przeznaczonego do uruchomienia programu Pythona przedstawia si(cid:218) nast(cid:218)puj(cid:200)co: $ python nazwa_skryptu .py 2. W kolejnym fragmencie kodu przedstawi(cid:239)em przyk(cid:239)ady uruchamiania konkretnych wersji Pythona, wed(cid:239)ug potrzeb: $ python2 nazwa_skryptu.py # U(cid:298)ycie najnowszego dost(cid:266)pnego wydania Python 2 $ python2.7 ... # U(cid:298)ycie wydania Python 2.7 $ python3 ... # U(cid:298)ycie najnowszego dost(cid:266)pnego wydania Python 3 $ python3.5.2 ... # U(cid:298)ycie wydania Python 3.5.2 Jak to dzia(cid:239)a? Wydanie polecenia python2 lub python3 powoduje uruchomienie najnowszej zainstalowanej wersji podanego wydania Pythona. Z kolei pozosta(cid:239)e przyk(cid:239)ady pokaza(cid:239)y uruchomienie konkret- nej wersji interpretera Pythona. Niezale(cid:285)nie od wersji dost(cid:218)pnych w witrynie internetowej Pythona mo(cid:285)esz u(cid:285)y(cid:202) tylko tych, które masz zainstalowane w systemie. To ma sens, poniewa(cid:285) programista by(cid:202) mo(cid:285)e chce zapewni(cid:202) obs(cid:239)ug(cid:218) starszego oprogramowania, którego wybrane funkcje mog(cid:200) by(cid:202) niezgodne z najnowszymi wydaniami j(cid:218)zyka. Dlatego wy- wo(cid:239)anie konkretnej wersji gwarantuje programi(cid:258)cie mo(cid:285)liwo(cid:258)(cid:202) u(cid:285)ycia prawid(cid:239)owego (cid:258)rodowiska. 60 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona Opcje polecenia python W przypadku u(cid:285)ycia nieinteraktywnego interpreter Pythona monitoruje pow(cid:239)ok(cid:218) i przetwarza wszystkie dane wej(cid:258)ciowe, zanim polecenie b(cid:218)dzie faktycznie wykonane. Oto wszystkie opcje dost(cid:218)pne podczas uruchamiania Pythona z poziomu pow(cid:239)oki: python [-bBdEhiIOqsSuvVWx?] [-c polecenie | -m nazwa-modu(cid:239)u | skrypt | - ] [argumenty] Podczas pracy z pow(cid:239)ok(cid:200) (systemy w rodziny UNIX/Linux) lub wierszem polecenia (Windows) przyk(cid:239)ady polece(cid:241) cz(cid:218)sto zawieraj(cid:200) nawias kwadratowy oznaczaj(cid:200)cy parametry opcjonalne. W omawianym przyk(cid:239)adzie mamy trzy grupy opcjonalne mo(cid:285)liwe do u(cid:285)ycia w trakcie wywo(cid:239)ania polecenia python: opcje ogólne, opcje interfejsu i argumenty. Jak to zrobi(cid:202)? 1. W trakcie wywo(cid:239)ania Pythona z poziomu pow(cid:239)oki masz do dyspozycji kilka opcji. Aby przej(cid:258)(cid:202) do trybu interaktywnego, wystarczy wyda(cid:202) polecenie python bez (cid:285)adnych opcji: $ python Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49) [GCC 7.2.0] on linux Type help , copyright , credits or license for more information. 2. Aby uruchomi(cid:202) zwyk(cid:239)y program Pythona bez (cid:285)adnych opcji specjalnych, wystarczy poda(cid:202) jego nazw(cid:218) po poleceniu python: $ python nazwa_skryptu .py 3. Wykonanie serii polece(cid:241) Pythona bez przej(cid:258)cia do trybu interaktywnego lub podania nazwy pliku jest mo(cid:285)liwe dzi(cid:218)ki u(cid:285)yciu opcji –c: $ python -c print( Witaj, (cid:258)wiecie! ) 4. Aby wywo(cid:239)a(cid:202) modu(cid:239) Pythona jako samodzielny program, nale(cid:285)y u(cid:285)y(cid:202) opcji –m: $ python -m random 5. Inne wybrane opcje zostan(cid:200) przedstawione w dalszej cz(cid:218)(cid:258)ci rozdzia(cid:239)u. Jak to dzia(cid:239)a? Pow(cid:239)oka Pythona akceptuje opcje interfejsu, ogólne, ró(cid:285)ne i argumenty. Ka(cid:285)da z tych grup jest opcjonalna i wi(cid:218)kszo(cid:258)(cid:202) programistów nie musi z nich korzysta(cid:202). Jednak dobrze jest wiedzie(cid:202), czym dysponujesz, na wypadek, gdy zechcesz wyj(cid:258)(cid:202) poza podstawy. 61 Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych Opcje interfejsu W przypadku wywo(cid:239)ania bez (cid:285)adnych opcji interpreter Pythona zostaje uruchomiony w trybie interaktywnym. W tym trybie monitoruje pow(cid:239)ok(cid:218) pod k(cid:200)tem polece(cid:241) Pythona i wykonuje je po ich wpisaniu. Aby opu(cid:258)ci(cid:202) tryb interaktywny, nale(cid:285)y wprowadzi(cid:202) znak ko(cid:241)ca pliku (ang. end-of-file — EOF) — w systemach z rodziny UNIX/Linux trzeba nacisn(cid:200)(cid:202) klawisze Ctrl+D, natomiast w Win- dowsie Ctrl+Z. (Normalnie znak EOF jest dostarczany automatycznie podczas odczytu programu z pliku. Tak si(cid:218) nie dzieje w przypadku trybu interaktywnego i u(cid:285)ytkownik musi samodzielnie wprowadzi(cid:202) ten znak). Opcje omówione w tym punkcie mog(cid:200) by(cid:202) (cid:239)(cid:200)czone z opcjami ró(cid:285)nymi, które omówi(cid:239)em w jed- nym z kolejnych punktów. (cid:81) -c polecenie — u(cid:285)ycie tej opcji spowoduje, (cid:285)e Python wykona podane polecenie. Wprowadzone polecenie mo(cid:285)e sk(cid:239)ada(cid:202) si(cid:218) z jednego lub wi(cid:218)cej s(cid:239)ów kluczowych rozdzielonych znakami nowego wiersza. Podobnie jak w przypadku zwyk(cid:239)ego kodu Pythona, tak(cid:285)e tutaj nale(cid:285)y pami(cid:218)ta(cid:202) o bia(cid:239)ych znakach, które w kodzie (cid:283)ród(cid:239)owym Pythona maj(cid:200) znaczenie. Polecenie przeznaczone do wykonania musi zosta(cid:202) uj(cid:218)te w znaki cytowania (cudzys(cid:239)ów lub apostrof). (cid:81) -m modu(cid:239) — ta opcja powoduje przeszukanie przez interpreter systemowej (cid:258)cie(cid:285)ki dost(cid:218)pu, znalezienie podanego modu(cid:239)u i wykonanie zawarto(cid:258)ci zdefiniowanej w module __main__. Modu(cid:239)y wykonywane za pomoc(cid:200) tej metody nie wymagaj(cid:200) rozszerzenia .py. Istnieje mo(cid:285)liwo(cid:258)(cid:202) podania pakietów modu(cid:239)ów i wówczas jako modu(cid:239) __main__ Python wykona pkg .__main__. Tej opcji nie mo(cid:285)na u(cid:285)ywa(cid:202) wraz ze skompilowanymi modu(cid:239)ami C, co dotyczy równie(cid:285) modu(cid:239)ów wbudowanych, poniewa(cid:285) nie s(cid:200) one kodem Pythona. Natomiast mo(cid:285)na j(cid:200) stosowa(cid:202) z prekompilowanymi plikami Pythona, .pyc, nawet je(cid:258)li niedost(cid:218)pny jest oryginalny plik kodu (cid:283)ród(cid:239)owego — to jest czysty kod Pythona. W przypadku u(cid:285)ycia tej opcji wykonany zostanie wszelki kod umieszczony pod wierszem if __name__ == __main__ . Jest to dobre miejsce na umieszczenie kodu konfiguracyjnego lub przeprowadzaj(cid:200)cego testy. (cid:81) skrypt — ta opcja spowoduje wykonanie kodu Pythona znajduj(cid:200)cego si(cid:218) w podanym skrypcie. Skrypt ten musi znajdowa(cid:202) si(cid:218) w (cid:258)cie(cid:285)ce dost(cid:218)pu systemu plików (bezwzgl(cid:218)dnej lub wzgl(cid:218)dnej) wskazuj(cid:200)cej zwyk(cid:239)y plik Pythona, katalog zawieraj(cid:200)cy plik __main__.py lub archiwum wraz z plikiem __main__.py. (cid:81) - — sam my(cid:258)lnik nakazuje interpreterowi odczyt danych pochodz(cid:200)cych ze standardowego wej(cid:258)cia (sys.stdin). Je(cid:285)eli standardowe wej(cid:258)cie jest po(cid:239)(cid:200)czone z terminalem, wówczas zostanie uruchomiony zwyk(cid:239)y tryb interaktywny. Wprawdzie klawiatura to domy(cid:258)lne urz(cid:200)dzenie wej(cid:258)ciowe, ale sys.stdin mo(cid:285)e zosta(cid:202) przekierowane na plik dowolnego typu, np. zwyk(cid:239)y plik tekstowy lub plik w formacie CSV. 62 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona Opcje ogólne Podobnie jak w przypadku wi(cid:218)kszo(cid:258)ci programów, opcje ogólne Pythona s(cid:200) znane z produktów komercyjnych, jak równie(cid:285) opracowywanych samodzielnie. (cid:81) -?. -h, --help — ka(cid:285)da z tych opcji spowoduje wy(cid:258)wietlenie krótkiego opisu polecenia i wszystkich dost(cid:218)pnych opcji. (cid:81) -V, -VV, --version — opcje -V i --version powoduj(cid:200) wy(cid:258)wietlenie numeru wersji interpretera Pythona, z kolei opcja -VV oznacza przej(cid:258)cie do trybu bardziej szczegó(cid:239)owego (tylko dla Pythona 3), który dostarcza wi(cid:218)cej informacji, np. o (cid:258)rodowisku Pythona lub u(cid:285)ytej wersji kompilatora GCC. Opcje ró(cid:285)ne Dla polecenia python dost(cid:218)pnych jest wiele opcji ró(cid:285)nych. Wprawdzie wi(cid:218)kszo(cid:258)(cid:202) z nich jest dost(cid:218)pna dla wyda(cid:241) Pythona 2 i 3, ale mi(cid:218)dzy nimi mog(cid:200) wyst(cid:218)powa(cid:202) pewne ró(cid:285)nice. Je(cid:285)eli po- jawi(cid:200) si(cid:218) jakiekolwiek w(cid:200)tpliwo(cid:258)ci, wówczas najlepiej zajrze(cid:202) do dokumentacji znajduj(cid:200)cej si(cid:218) na stronie https://docs.python.org/2.7/using/cmdline.html. (Upewnij si(cid:218), (cid:285)e przegl(cid:200)dasz doku- mentacj(cid:218) do u(cid:285)ywanej przez siebie wersji Pythona). Oto krótkie omówienie wybranych opcji: (cid:81) -b, -bb — powoduje wy(cid:258)wietlenie ostrze(cid:285)enia podczas porównywania typów bytes i bytesarray z str lub porównywania typu bytes z int, natomiast podwójne b powoduje wygenerowanie b(cid:239)(cid:218)du zamiast ostrze(cid:285)enia. (cid:81) -B — powoduje nietworzenie plików kodu bajtowego .pyc podczas importowania modu(cid:239)ów kodu (cid:283)ród(cid:239)owego. Ta opcja jest powi(cid:200)zana z PYTHONDONTWRITEBYTECODE. (cid:81) -d — powoduje w(cid:239)(cid:200)czenie analizatora danych wyj(cid:258)ciowych debugowania. Ta opcja jest powi(cid:200)zana z PYTHONDEBUG. (cid:81) -E — powoduje zignorowanie wszystkich zdefiniowanych zmiennych (cid:258)rodowiskowych PYTHON*, takich jak PYTHONDEBUG. (cid:81) -i — gdy skrypt jest pierwszym argumentem polecenia python lub zosta(cid:239)a u(cid:285)yta opcja -c, omawiana tutaj opcja powoduje przej(cid:258)cie interpretera do trybu interaktywnego po wykonaniu skryptu b(cid:200)d(cid:283) polecenia. Zmiana trybu nast(cid:218)puje nawet wtedy, gdy sys.stdin nie jest terminalem. Jest to u(cid:285)yteczna mo(cid:285)liwo(cid:258)(cid:202) w przypadku zg(cid:239)oszenia wyj(cid:200)tku, poniewa(cid:285) powala programi(cid:258)cie na interaktywne prze(cid:258)ledzenie stosu wywo(cid:239)a(cid:241). (cid:81) -I — powoduje uruchomienie interpretera w trybie izolowanym (automatycznie oznacza tak(cid:285)e u(cid:285)ycie opcji -E i -s). Tryb izolowany oznacza, (cid:285)e sys.path nie przechwytuje katalogu skryptu lub katalogu pakietów u(cid:285)ytkownika. Ponadto zostaj(cid:200) zignorowane wszystkie zmienne PYTHON*. Mog(cid:200) zosta(cid:202) na(cid:239)o(cid:285)one dodatkowe ograniczenia, aby uniemo(cid:285)liwi(cid:202) u(cid:285)ytkownikowi wstrzykni(cid:218)cie do programu Pythona kodu o z(cid:239)o(cid:258)liwym dzia(cid:239)aniu. (cid:81) -J — ta opcja jest zarezerwowana do u(cid:285)ycia przez implementacj(cid:218) Jython. (cid:81) -O, -OO — powoduj(cid:200) w(cid:239)(cid:200)czenie podstawowych optymalizacji. Jak ju(cid:285) wspomnia(cid:239)em w rozdziale 1., te opcje powoduj(cid:200) usuni(cid:218)cie z kodu Pythona wywo(cid:239)a(cid:241) assert(). 63 Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych S(cid:200) powi(cid:200)zane z PYTHONOPTIMIZE. U(cid:285)ycie -OO skutkuje usuni(cid:218)ciem z kodu równie(cid:285) komentarzy typu docstring. (cid:81) -q — tryb cichy zawiesza wy(cid:258)wietlanie przez interpreter Pythona informacji o prawach autorskich i wersji, nawet w trybie interaktywnym. Ta opcja okazuje si(cid:218) u(cid:285)yteczna podczas wykonywania programów odczytuj(cid:200)cych dane ze zdalnych systemów i nie wymagaj(cid:200)cych przedstawiania informacji. (cid:81) -R — ta opcja nie ma znaczenia w wydaniu Python 3.3 i nowszych. Powoduje w(cid:239)(cid:200)czenie losowo(cid:258)ci warto(cid:258)ci hash przez u(cid:285)ycie __hash__() dla obiektów typu str, bytes i datetime. Pozostaj(cid:200) one sta(cid:239)e w poszczególnych procesach Pythona, ale inne w ró(cid:285)nych wywo(cid:239)aniach Pythona. Ta opcja jest powi(cid:200)zana z PYTHONHASHSEED. (cid:81) -s — powoduje niedodawanie katalogu site-packages u(cid:285)ytkownika do (cid:258)cie(cid:285)ki w sys.path. Skutkuje to wymaganiem od u(cid:285)ytkownika, aby poda(cid:239) (cid:258)cie(cid:285)k(cid:218) dost(cid:218)pu do (cid:285)(cid:200)danych pakietów znajduj(cid:200)cych si(cid:218) w wymienionym katalogu. (cid:81) -S — wy(cid:239)(cid:200)cza importowanie modu(cid:239)u site i zwi(cid:200)zane z tym modyfikacje systemowej (cid:258)cie(cid:285)ki dost(cid:218)pu sys.path. Nawet je(cid:258)li modu(cid:239) site zostanie pó(cid:283)niej wyra(cid:283)nie zaimportowany, modyfikacje te nadal b(cid:218)d(cid:200) wy(cid:239)(cid:200)czone. Wywo(cid:239)anie site.main() jest wymagane, aby zezwoli(cid:202) na u(cid:285)ycie modyfikacji. (cid:81) -u — wymusza niebuforowanie danych binarnych dla strumieni wyj(cid:258)ciowych stdout i stderr. Nie ma wp(cid:239)ywu na tekstowe operacji wej(cid:258)cia – wyj(cid:258)cia w trybie interaktywnym lub buforowanie bloków w trybie nieinteraktywnym. Ta opcja jest powi(cid:200)zana z PYTHONUNBUFFERED. (cid:81) -v, -vv — powoduje wy(cid:258)wietlenie komunikatu za ka(cid:285)dym razem, gdy modu(cid:239) jest inicjalizowany. Komunikat ów podaje po(cid:239)o(cid:285)enie (plik lub wbudowany modu(cid:239)) komponentu wczytuj(cid:200)cego ten modu(cid:239). Ponadto b(cid:218)d(cid:200) wy(cid:258)wietlane informacje o operacjach porz(cid:200)dkowych przeprowadzanych po zako(cid:241)czeniu pracy z modu(cid:239)em. U(cid:285)ycie opcji -vv spowoduje wy(cid:258)wietlenie komunikatu za ka(cid:285)dym razem, gdy sprawdzany jest plik w poszukiwaniu modu(cid:239)u. Ta opcja jest powi(cid:200)zana z PYTHONVERBOSE. (cid:81) -W arg — kontroluje wy(cid:258)wietlanie ostrze(cid:285)e(cid:241). Domy(cid:258)lnie ka(cid:285)de ostrze(cid:285)enie jest wy(cid:258)wietlane tylko jednokrotnie dla wiersza kodu, który je wygenerowa(cid:239). Istnieje mo(cid:285)liwo(cid:258)(cid:202) u(cid:285)ycia wielu opcji -W, ka(cid:285)dej z innym argumentem. W przypadku dopasowania wi(cid:218)cej ni(cid:285) jednej opcji zostanie zwrócona ostatnia dopasowana. Ta opcja jest powi(cid:200)zana z PYTHONWARNINGS. Dost(cid:218)pne s(cid:200) nast(cid:218)puj(cid:200)ce argumenty: (cid:81) ignore — zignorowanie wszystkich ostrze(cid:285)e(cid:241). (cid:81) default — wyra(cid:283)ne (cid:285)(cid:200)danie zachowania domy(cid:258)lnego, czyli jednokrotnego wy(cid:258)wietlenia ka(cid:285)dego ostrze(cid:285)enia dla ka(cid:285)dego wiersza kodu (cid:283)ród(cid:239)owego, który spowodowa(cid:239) wygenerowanie ostrze(cid:285)enia. Nie ma tutaj znaczenia, ile razy wiersz b(cid:218)dzie przetwarzany. (cid:81) all — wy(cid:258)wietlenie ostrze(cid:285)enia za ka(cid:285)dym razem, gdy wyst(cid:200)pi. Ostrze(cid:285)enie mo(cid:285)e zosta(cid:202) wy(cid:258)wietlone wielokrotnie, je(cid:258)li powoduj(cid:200)cy je wiersz kodu b(cid:218)dzie przetwarzany wi(cid:218)cej ni(cid:285) raz, na przyk(cid:239)ad w p(cid:218)tli. 64 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona (cid:81) module — wy(cid:258)wietlenie ostrze(cid:285)enia po jego pierwszym wyst(cid:200)pieniu w ka(cid:285)dym module. (cid:81) once — wy(cid:258)wietlenie ostrze(cid:285)enia po jego pierwszym wyst(cid:200)pieniu w programie. (cid:81) error — zamiast wy(cid:258)wietlenia ostrze(cid:285)enia nast(cid:200)pi zg(cid:239)oszenie wyj(cid:200)tku. Modu(cid:239) warnings mo(cid:285)na zaimportowa(cid:202) w programie Pythona, aby zachowa(cid:202) kontrol(cid:218) nad ostrze(cid:285)eniami generowanymi przez program. (cid:81) -x — pomini(cid:218)cie pierwszego wiersza kodu (cid:283)ród(cid:239)owego. W systemach z rodziny UNIX/Linux pierwszy wiersz skryptu to zwykle tak zwany shebang i zawiera kod taki jak #!/usr/bin/python. W wymienionym przypadku shebang wskazuje, gdzie skrypt ma szuka(cid:202) (cid:258)rodowiska Pythona. Omawiana opcja powoduje pomini(cid:218)cie tego wiersza. Dzi(cid:218)ki temu mo(cid:285)na stosowa(cid:202) inne formaty shebang ni(cid:285) powszechnie u(cid:285)ywane w systemach UNIX i Linux. (cid:81) -X warto(cid:258)(cid:202) — ta opcja jest zarezerwowana dla opcji specyficznych dla implementacji, a tak(cid:285)e do przekazywania dowolnych warto(cid:258)ci i ich pobierania za pomoc(cid:200) s(cid:239)ownika sys._xoptions. Aktualnie s(cid:200) zdefiniowane nast(cid:218)puj(cid:200)ce warto(cid:258)ci: (cid:81) faulthandler — zezwala na u(cid:285)ycie modu(cid:239)u faulthandler, który zapisuje stos wywo(cid:239)a(cid:241) Pythona w przypadku wyst(cid:200)pienia b(cid:239)(cid:218)dów w programie. (cid:81) showrefcount — dzia(cid:239)a jedynie podczas debugowania. Wy(cid:258)wietla ca(cid:239)kowit(cid:200) warto(cid:258)(cid:202) licznika odwo(cid:239)a(cid:241) i liczb(cid:218) u(cid:285)ytych bloków pami(cid:218)ci, gdy program zako(cid:241)czy dzia(cid:239)anie lub po ka(cid:285)dym poleceniu w sesji interaktywnej. (cid:81) tracemalloc — za pomoc(cid:200) modu(cid:239)u tracemalloc rozpoczyna monitorowanie alokacji pami(cid:218)ci Pythona. Domy(cid:258)lnie na stosie wywo(cid:239)a(cid:241) znajduje si(cid:218) ostatnia ramka. (cid:81) showalloccount — gdy program zako(cid:241)czy dzia(cid:239)anie, nast(cid:218)puje wy(cid:258)wietlenie ca(cid:239)kowitej liczby zaalokowanych obiektów dla poszczególnych typów. Dzia(cid:239)a jedynie po zdefiniowaniu COUNT_ALLOCS w trakcie kompilacji Pythona. Zobacz równie(cid:285) Wi(cid:218)cej informacji na ten temat znajdziesz tak(cid:285)e w rozdziale 1., po(cid:258)wi(cid:218)conym pracy z mo- du(cid:239)ami Pythona. Praca ze zmiennymi (cid:258)rodowiskowymi Zmienne (cid:258)rodowiskowe to cz(cid:218)(cid:258)(cid:202) systemu operacyjnego i maj(cid:200) wp(cid:239)yw na jego dzia(cid:239)anie. Python ma charakterystyczne dla siebie zmienne wp(cid:239)ywaj(cid:200)ce na sposób jego dzia(cid:239)ania, a dok(cid:239)adniej na zachowanie interpretera. S(cid:200) one przetwarzane przed opcjami pow(cid:239)oki, które nadpisuj(cid:200) zmienne (cid:258)rodowiskowe w przypadku wyst(cid:200)pienia konfliktu. 65 Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych Jak to zrobi(cid:202)? 1. Zmienne (cid:258)rodowiskowe s(cid:200) dost(cid:218)pne za pomoc(cid:200) obiektu Pythona os.environ. 2. Poniewa(cid:285) obiekt environ jest s(cid:239)ownikiem, mo(cid:285)na wybra(cid:202) konkretn(cid:200) zmienn(cid:200) do wy(cid:258)wietlenia: import os print(os.environ[ PATH ]) /home/cody/anaconda3/bin:/home/cody/bin:/home/cody/ .local/bin:/usr/local/sbin:/usr/local/bin:/usr /sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 3. Dodanie nowej zmiennej jest proste i sprowadza si(cid:218) do wydania nast(cid:218)puj(cid:200)cego polecenia: os.environ[ PYTHONOPTIMIZE ] = 1 Jak to dzia(cid:239)a? Dost(cid:218)pna jest ogromna liczba zmiennych (cid:258)rodowiskowych charakterystycznych dla Pythona. W tym miejscu wymieni(cid:239)em tylko wybrane. (cid:81) PYTHONHOME — u(cid:285)ywana do zmiany po(cid:239)o(cid:285)enia bibliotek standardowych Pythona. Domy(cid:258)lnie te biblioteki znajduj(cid:200) si(cid:218) w /usr/local/lib/ wersja_pythona . (cid:81) PYTHONPATH — modyfikuje domy(cid:258)ln(cid:200) (cid:258)cie(cid:285)k(cid:218) dost(cid:218)pu sprawdzan(cid:200) podczas wyszukiwania modu(cid:239)ów. Format jest taki sam jak w przypadku zmiennej PATH pow(cid:239)oki. Wprawdzie katalogi s(cid:200) zwykle umieszczane w lokalizacji wskazywanej przez zmienn(cid:200) PYTHONPATH, poszczególne elementy mog(cid:200) prowadzi(cid:202) do archiwów ZIP zawieraj(cid:200)cych czyste modu(cid:239)y Pythona. Modu(cid:239)y te mog(cid:200) mie(cid:202) posta(cid:202) kodu (cid:283)ród(cid:239)owego lub skompilowanych plików Pythona. (cid:81) PYTHONSTARTUP — powoduje wykonanie polece(cid:241) Pythona we wskazanym pliku startowym, zanim pojawi si(cid:218) znak zach(cid:218)ty trybu interaktywnego. Ten plik jest wykonywany w tej samej przestrzeni nazw co znak zach(cid:218)ty trybu interaktywnego, wi(cid:218)c obiekty definiowane lub importowane w pliku startowym mog(cid:200) by(cid:202) u(cid:285)ywane natywnie, czyli bez konieczno(cid:258)ci stosowania sk(cid:239)adni z u(cid:285)yciem kropki. Za pomoc(cid:200) tego pliku mo(cid:285)na zmieni(cid:202) znaki zach(cid:218)ty trybu interaktywnego. W szczególno(cid:258)ci dotyczy to u(cid:285)ywanych w trybie interaktywnym znaków zach(cid:218)ty sys.ps1 ( ) i sys.ps2 (...), które mo(cid:285)na zast(cid:200)pi(cid:202) innymi. Ten plik pozwala równie(cid:285) zmodyfikowa(cid:202) zaczep sys.__interactivehook__, którego zadaniem jest konfiguracja modu(cid:239)u rlcompleter definiuj(cid:200)cego sposób, w jaki Python b(cid:218)dzie uzupe(cid:239)nia(cid:239) prawid(cid:239)owe identyfikatory i s(cid:239)owa kluczowe modu(cid:239)u GNU readline. Innymi s(cid:239)owy ten zaczep jest odpowiedzialny za skonfigurowanie uzupe(cid:239)niania polece(cid:241) w Pythonie po naci(cid:258)ni(cid:218)ciu klawisza Tab i za zdefiniowanie domy(cid:258)lnego pliku historii polece(cid:241) (~/.python_history). 66 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona (cid:81) PYTHONOPTIMIZE — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, dzia(cid:239)a dok(cid:239)adnie tak samo jak opcja –O, natomiast warto(cid:258)(cid:202) w postaci ci(cid:200)gu tekstowego przedstawiaj(cid:200)cego liczb(cid:218), np. 2 , ma takie samo znaczenie jak kilkukrotne u(cid:285)ycie opcji -O. (cid:81) PYTHONDEBUG — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, dzia(cid:239)a dok(cid:239)adnie tak samo jak opcja –d, natomiast warto(cid:258)(cid:202) w postaci ci(cid:200)gu tekstowego przedstawiaj(cid:200)cego liczb(cid:218), np. 2 , ma takie samo znaczenie jak kilkukrotne u(cid:285)ycie opcji -d. (cid:81) PYTHONINSPECT — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, dzia(cid:239)a dok(cid:239)adnie tak samo jak opcja -i. Ta zmienna (cid:258)rodowiskowa mo(cid:285)e by(cid:202) równie(cid:285) modyfikowana za pomoc(cid:200) kodu Pythona przez u(cid:285)ycie polecenia os.environ do wymuszenia trybu analizy po zako(cid:241)czeniu dzia(cid:239)ania programu. (cid:81) PYTHONUNBUFFERED — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, dzia(cid:239)a dok(cid:239)adnie tak samo jak opcja -u. (cid:81) PYTHONVERBOSE — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, dzia(cid:239)a dok(cid:239)adnie tak samo jak opcja –v, natomiast warto(cid:258)(cid:202) w postaci liczbowej ma takie samo znaczenie jak kilkukrotne u(cid:285)ycie opcji -v. (cid:81) PYTHONCASEOK — po zdefiniowaniu tej zmiennej Python zignoruje wielko(cid:258)(cid:202) liter w poleceniach import. Ta opcja jest dost(cid:218)pna jedynie w systemach Windows i macOS. (cid:81) PYTHONDONTWRITEBYTECODE — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, interpreter nie b(cid:218)dzie zapisywa(cid:239) kodu bajtowego (pliki z rozszerzeniem .pyc) podczas importowania plików kodu (cid:283)ród(cid:239)owego. Dzia(cid:239)anie tej zmiennej jest dok(cid:239)adnie takie samo jak opcji -B. (cid:81) PYTHONHASHSEED — gdy ma przypisan(cid:200) warto(cid:258)(cid:202) random lub w ogóle nie jest zdefiniowana, losowo wybrana warto(cid:258)(cid:202) zostanie u(cid:285)yta jako zal(cid:200)(cid:285)ek podczas generowania warto(cid:258)ci hash dla obiektów typu str, bytes i datetime. Natomiast warto(cid:258)(cid:202) w postaci liczby ca(cid:239)kowitej spowoduje, (cid:285)e ta liczba zostanie u(cid:285)yta jako zal(cid:200)(cid:285)ek podczas generowania warto(cid:258)ci hash. Dzi(cid:218)ki temu mo(cid:285)na zapewni(cid:202) powtarzalno(cid:258)(cid:202) wyników. (cid:81) PYTHONIOENCODING — je(cid:285)eli zostanie zdefiniowana przed uruchomieniem interpretera, podane kodowanie zostanie nadpisane dla stdin, stdout i stderr. Sk(cid:239)adnia ma posta(cid:202) encodingname:errorhandler. Oba elementy sk(cid:239)adni s(cid:200) opcjonalne i maj(cid:200) takie samo znaczenie jak w przypadku funkcji str.encode(). Pocz(cid:200)wszy od wydania Python 3.6, kodowanie wskazywane przez t(cid:218) zmienn(cid:200) jest ignorowane w systemie Windows podczas u(cid:285)ycia konsoli interaktywnej, o ile nie zosta(cid:239)a zdefiniowana zmienna PYTHONLEGACYWINDOWSSTDIO. (cid:81) PYTHONNOUSERSITE — po zdefiniowaniu tej zmiennej Python nie do(cid:239)(cid:200)czy katalogu site-packages u(cid:285)ytkownika do (cid:258)cie(cid:285)ki dost(cid:218)pu w sys.path. (cid:81) PYTHONUSERBASE — powoduje zdefiniowanie katalogu base u(cid:285)ytkownika. Katalog ten jest u(cid:285)ywany jako (cid:258)cie(cid:285)ka dost(cid:218)pu dla site-packaes i instalacji modu(cid:239)u Distutils po wydaniu polecenia python setup.py install -user. (cid:81) PYTHONEXECUTABLE — po zdefiniowaniu tej zmiennej element sys.argv[0] b(cid:218)dzie mia(cid:239) jej warto(cid:258)(cid:202), a nie warto(cid:258)(cid:202) uzyskan(cid:200) ze (cid:258)rodowiska uruchomieniowego C. Ta zmienna dzia(cid:239)a jedynie w systemie macOS. 67 Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych (cid:81) PYTHONWARNINGS — po zdefiniowaniu dzia(cid:239)a tak samo jak opcja -W. Przypisanie jej rozdzielonego przecinkami ci(cid:200)gu tekstowego jest odpowiednikiem u(cid:285)ycia wielu opcji -W. (cid:81) PYTHONFAULTHANDLER — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, w trakcie uruchamiania Pythona zostanie wywo(cid:239)ana funkcja faulthandler.enable(). Dzia(cid:239)anie tej zmiennej jest dok(cid:239)adnie takie samo jak u(cid:285)ycie opcji -X faulthandler. (cid:81) PYTHONTRACEMALLOC — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, modu(cid:239) tracemalloc rozpoczyna monitorowanie alokacji pami(cid:218)ci przez Pythona. Podana warto(cid:258)(cid:202) zmiennej okre(cid:258)la liczb(cid:218) ramek przechowywanych na stosie wywo(cid:239)a(cid:241). (cid:81) PYTHONASYNCIODEBUG — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, w(cid:239)(cid:200)czony zostanie tryb debug modu(cid:239)u asyncio. (cid:81) PYTHONMALLOC — definiuje alokacj(cid:218) pami(cid:218)ci Pythona, a tak(cid:285)e instaluje zaczepy przydatne podczas procesu debugowania. Oto dost(cid:218)pne komponenty zwi(cid:200)zane z alokacj(cid:200) pami(cid:218)ci: (cid:81) malloc — u(cid:285)ycie znanej z j(cid:218)zyka C funkcji malloc() we wszystkich domenach. (cid:81) pymalloc — u(cid:285)ycie pymalloc dla domen PYMEM_DOMAIN_MEM i PYMEM_DOMAIN_OBJ, natomiast znanej z C malloc() dla domeny PYMEM_DOMAIN_RAW. Dost(cid:218)pne zaczepy debugowania s(cid:200) mi(cid:218)dzy innymi nast(cid:218)puj(cid:200)ce: (cid:81) debug — instaluje zaczepy debugowania na bazie domy(cid:258)lnego sposobu alokacji pami(cid:218)ci. (cid:81) malloc_debug — dzia(cid:239)a tak samo jak przedstawiony wcze(cid:258)niej malloc, a dodatkowo instaluje zaczepy debugowania. (cid:81) pymalloc_debug — dzia(cid:239)a tak samo jak przedstawiony wcze(cid:258)niej pymalloc, a dodatkowo instaluje zaczepy debugowania. Gdy Python jest skompilowany w trybie debugowania, nast(cid:218)puje zdefiniowanie pymalloc_debug i automatyczne stosowanie zaczepów debugowania. Natomiast kompilacja w trybie wydania powoduje zdefiniowanie zwyk(cid:239)ego trybu pymalloc. Je(cid:285)eli (cid:285)aden z trybów pymalloc nie b(cid:218)dzie dost(cid:218)pny, zostan(cid:200) u(cid:285)yte zwyk(cid:239)e tryby malloc. (cid:81) PYTHONMALLOCSTATS — je(cid:285)eli ma warto(cid:258)(cid:202) inn(cid:200) ni(cid:285) pusty ci(cid:200)g tekstowy, Python wy(cid:258)wietla dane statystyczne dla alokatora pymalloc za ka(cid:285)dym razem, gdy b(cid:218)dzie tworzony nowy obiekt pymalloc i podczas zamykania programu. Natomiast je(cid:258)li alokator pymalloc jest niedost(cid:218)pny, ta zmienna zostanie zignorowana. (cid:81) PYTHONLEGACYWINDOWSENCODING — po zdefiniowaniu tej zmiennej domy(cid:258)lne kodowanie systemu plików i tryb b(cid:239)(cid:218)dów otrzymaj(cid:200) warto(cid:258)ci sprzed wydania Pythona 3.6. Je(cid:285)eli u(cid:285)ywasz wydania 3.6 lub nowszego, kodowanie to utf-8, a tryb b(cid:239)(cid:218)dów to surrogatepass. Ta mo(cid:285)liwo(cid:258)(cid:202) jest dost(cid:218)pna jedynie w systemie Windows. (cid:81) PYTHONLEGACYWINDOWSTDIO — po zdefiniowaniu tej zmiennej nie b(cid:218)d(cid:200) u(cid:285)ywane obiekty odczytu i zapisu nowej konsoli, co spowoduje kodowanie znaków Unicode na podstawie strony kodowej aktywnej konsoli, a nie UTF-8. Ta zmienna jest dost(cid:218)pna jedynie w systemie Windows. 68 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona (cid:81) PYTHONTHREADDEBUG — po zdefiniowaniu tej zmiennej Python b(cid:218)dzie wy(cid:258)wietla(cid:202) informacje debugowania dla w(cid:200)tków (definiowana tylko podczas kompilacji Pythona w trybie debugowania). (cid:81) PYTHONDUMPREFS — po zdefiniowaniu tej zmiennej Python b(cid:218)dzie zapisywa(cid:202) obiekty i liczniki odwo(cid:239)a(cid:241), które nadal istniej(cid:200) po zako(cid:241)czeniu dzia(cid:239)ania interpretera (definiowana tylko podczas kompilacji Pythona w trybie debugowania). Definiowanie skryptu jako wykonywalnego Normalnie uruchomienie programu Pythona wymaga wydania polecenia python nazwa-programu .py. Jednak istnieje mo(cid:285)liwo(cid:258)(cid:202) zdefiniowania programu Pythona jako samowykonywalnego, co nie b(cid:218)dzie wymaga(cid:239)o wydania polecenia python. Jak to zrobi(cid:202)? 1. W systemach z rodziny UNIX i Linux umieszczenie w pierwszym wierszu programu polecenia #!/usr/bin/env python pozwala na wykonanie programu przez odwo(cid:239)anie si(cid:218) do Pythona za pomoc(cid:200) zmiennej PATH u(cid:285)ytkownika. Oczywi(cid:258)cie przy za(cid:239)o(cid:285)eniu, (cid:285)e Python zosta(cid:239) zainstalowany w lokalizacji wymienionej w (cid:258)cie(cid:285)ce dost(cid:218)pu zdefiniowanej przez zmienn(cid:200) PATH. W przeciwnym razie program trzeba b(cid:218)dzie uruchamia(cid:202) w zwyk(cid:239)y sposób. 2. Po dodaniu wymienionego wiersza do programu równie(cid:285) plikowi trzeba nada(cid:202) uprawnienia wykonywania, co wymaga wydania takiego polecenia: $ chmod +x nazwa-programu .py 3. Je(cid:285)eli u(cid:285)ywasz programu terminala wy(cid:258)wietlaj(cid:200)cego pliki i katalogi w kolorach zale(cid:285)nych od trybu dzia(cid:239)ania, wówczas wydanie polecenia ls w katalogu zawieraj(cid:200)cym plik zmodyfikowany przez polecenie w poprzednim punkcie powinno spowodowa(cid:202), (cid:285)e ten plik b(cid:218)dzie w innym kolorze ni(cid:285) pliki niewykonywalne. 4. Aby uruchomi(cid:202) program, wystarczy wyda(cid:202) polecenie ./ nazwa-programu .py. To spowoduje uruchomienie programu bez konieczno(cid:258)ci wcze(cid:258)niejszego podania s(cid:239)owa kluczowego python. Co dalej? Windows nie ma trybu wykonywania, wi(cid:218)c omówione tutaj kroki s(cid:200) niezb(cid:218)dne jedynie w syste- mach z rodziny UNIX i Linux. Windows automatycznie powi(cid:200)zuje pliki .py z python.exe, co oznacza, (cid:285)e zostan(cid:218) uruchomione przez interpreter Pythona. Natomiast pliki z rozszerzeniem .pyw zapobiegaj(cid:200) wy(cid:258)wietlaniu okna konsoli po uruchomieniu programu Pythona w Windowsie. 69 Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych Zmiana sposobu uruchamiania interpretera interaktywnego Jak wspomnia(cid:239)em w recepturze dotycz(cid:200)cej pracy ze zmiennymi (cid:258)rodowiskowymi, zmienna PYTHONSTARTUP mo(cid:285)e wskazywa(cid:202) plik zawieraj(cid:200)cy polecenia do wykonania przed uruchomieniem interpretera Pythona. Jest to funkcjonalno(cid:258)(cid:202), któr(cid:200) mo(cid:285)na porówna(cid:202) do pliku .profile w syste- mach z rodziny UNIX i Linux. Poniewa(cid:285) ten plik startowy jest analizowany tylko podczas u(cid:285)ycia trybu interaktywnego, nie trzeba si(cid:218) przejmowa(cid:202) próbami przygotowania konfiguracji dla uruchamianych skryptów (z dalszej cz(cid:218)(cid:258)ci rozdzia(cid:239)u dowiesz si(cid:218), jak w skrypcie doda(cid:202) plik startowy). Polecenia zdefi- niowane w tym pliku s(cid:200) wykonywane w tej samej przestrzeni nazw co interpreter interaktywny, wi(cid:218)c nie ma konieczno(cid:258)ci podawania w pe(cid:239)ni kwalifikowanych nazw funkcji lub importowania z wykorzystaniem polece(cid:241) z kropk(cid:200). Plik startowy jest odpowiedzialny równie(cid:285) za wprowa- dzanie zmian w znakach zach(cid:218)ty pow(cid:239)oki interaktywnej: (sys.ps1) i ... (sys.ps2). Jak to zrobi(cid:202)? 1. Aby odczyta(cid:202) dodatkowy plik startowy znajduj(cid:200)cy si(cid:218) w katalogu bie(cid:285)(cid:200)cym, nale(cid:285)y u(cid:285)y(cid:202) poni(cid:285)szego polecenia, które pokazuje przyk(cid:239)ad kodu umieszczonego w globalnym pliku startowym (tutaj read_startup.py): if os.path.isfile( .pythonrc.py ): exec(open( .pythonrc.py ).read() 2. Wprawdzie plik startowy jest szukany jedynie podczas uruchamiania trybu interaktywnego, ale mo(cid:285)na si(cid:218) do niego odwo(cid:239)a(cid:202) równie(cid:285) z poziomu skryptu. Przyk(cid:239)ad takiego rozwi(cid:200)zania pokaza(cid:239)em w pliku startup_script.py. import os filename = os.environ.get( PYTHONSTARTUP ) if filename and os.path.isfile(filename): with open(filename) as fobj: startup_file = fobj.read() exec(startup_file) Zobacz równie(cid:285) Zapoznaj si(cid:218) tez z podrozdzia(cid:239)em „Praca ze zmiennymi (cid:258)rodowiskowymi” we wcze(cid:258)niejszej cz(cid:218)(cid:258)ci rozdzia(cid:239)u. 70 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona Alternatywne implementacje Pythona Python zosta(cid:239) przeniesiony do wielu ró(cid:285)nych (cid:258)rodowisk, takich jak Java i .NET. To oznacza mo(cid:285)- liwo(cid:258)(cid:202) u(cid:285)ycia Pythona w zwyk(cid:239)y sposób w tych (cid:258)rodowiskach z dost(cid:218)pem do API i kodu zwi(cid:200)za- nego z dzia(cid:239)aniem tych (cid:258)rodowisk. Jython jest u(cid:285)ywany do integracji z Jav(cid:200), IronPython do integracji z .NET Framework, Stackless Python charakteryzuje si(cid:218) wi(cid:218)ksz(cid:200) wydajno(cid:258)ci(cid:200) w dzia(cid:239)aniu w(cid:200)tków, natomiast MicroPython jest przeznaczony do u(cid:285)ycia wraz z mikrokontrolerami. Jak to zrobi(cid:202)? 1. Aby u(cid:285)y(cid:202) Jythona, plik Javy z rozszerzeniem .jar dostarcza wykonywalny plik instalacyjny. Podczas instalacji dost(cid:218)pne s(cid:200) dwie opcje. 2. Zwyk(cid:239)a instalacja z u(cid:285)yciem graficznego interfejsu u(cid:285)ytkownika jest mo(cid:285)liwa po zastosowaniu nast(cid:218)puj(cid:200)cego polecenia: $ java -jar jython_installer-2.7.1.jar 3. Natomiast w przypadku systemów dzia(cid:239)aj(cid:200)cych z poziomu pow(cid:239)oki, na przyk(cid:239)ad serwera, nale(cid:285)y skorzysta(cid:202) z nast(cid:218)puj(cid:200)cego polecenia: $ java -jar jython_installer-2.7.1.jar –console 4. IronPython mo(cid:285)na zainstalowa(cid:202) za pomoc(cid:200) pliku instalacyjnego Windowsa z rozszerzeniem .msi, za pomoc(cid:200) archiwum ZIP lub przez pobranie kodu (cid:283)ród(cid:239)owego. Instalacja z u(cid:285)yciem .msi odbywa si(cid:218) w taki sam sposób jak ka(cid:285)dego innego programu w Windowsie. Pliku .zip i kodu (cid:283)ród(cid:239)owego mo(cid:285)na u(cid:285)y(cid:202) na platformach innych ni(cid:285) Windows. 5. NuGet to mened(cid:285)er pakietów dla .NET Framework. IronPythona mo(cid:285)na zainstalowa(cid:202) za pomoc(cid:200) NuGet podobnie jak ma to miejsce w przypadku pakietów narz(cid:218)dzia pip. Wymagane s(cid:200) dwa pakiety, poniewa(cid:285) biblioteka standardowa Pythona znajduje si(cid:218) w oddzielnym pakiecie. W omawianym przyk(cid:239)adzie trzeba wyda(cid:202) nast(cid:218)puj(cid:200)ce polecenia NuGet: Install-Package IronPython Install-Package IronPython.StdLib 6. Aby zainstalowa(cid:202) Stacklessa, konkretna metoda zale(cid:285)y od u(cid:285)ywanego systemu operacyjnego. W przypadku systemu z rodziny UNIX i Linux nale(cid:285)y zastosowa(cid:202) standardowy proces configure, make, install: $ ./configure $ make $ make test $ sudo make install 7. W systemie macOS procedura jest nieco bardziej skomplikowana. Python powinien by(cid:202) skonfigurowany wraz z opcj(cid:200) --enable-framework, a nast(cid:218)pnie trzeba wyda(cid:202) polecenie make frameworkinstall, aby doko(cid:241)czy(cid:202) instalacj(cid:218) Stacklessa. 71 Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych 8. W systemie Windows jest to jeszcze bardziej skomplikowane. Trzeba zainstalowa(cid:202) oprogramowanie Microsoft Visual Studio 2015 wraz z systemem kontroli wersji Subversion. Polecenie build.bat -e jest u(cid:285)ywane do skompilowania Stackless. Wi(cid:218)cej informacji szczegó(cid:239)owych na ten temat znajdziesz w dokumentacji, do której lektury jeszcze przed rozpocz(cid:218)ciem procesu instalacji gor(cid:200)co Ci(cid:218) zach(cid:218)cam. 9. MicroPython jest dost(cid:218)pny w postaci plików .zip i .tar.gz, a tak(cid:285)e w repozytorium GitHub. Podczas instalacji wymagana jest pewna liczba opcji i zale(cid:285)no(cid:258)ci, cho(cid:202) ogólna procedura przedstawia si(cid:218) nast(cid:218)puj(cid:200)co: $ git submodule update --init $ cd ports/unix $ make axtls $ make Co dalej? W tym miejscu wspomn(cid:218) o dost(cid:218)pnych implementacjach Pythona dla ró(cid:285)nych platform i frame- worków. (cid:81) Jython. Jest to implementacja Pythona dla wirtualnej maszyny Javy (ang. Java Virtual Machine — JVM). Jython pobiera zwyk(cid:239)y interpreter Pythona i modyfikuje go w taki sposób, aby móc si(cid:218) z nim komunikowa(cid:202) i uruchomi(cid:202) go na platformie Javy. Dlatego obie wymienione platformy zostaj(cid:200) zintegrowane i mo(cid:285)liwe staje si(cid:218) u(cid:285)ycie w programach Pythona bibliotek i aplikacji Javy. Wprawdzie cz(cid:239)onkowie projektu Jython do(cid:239)o(cid:285)yli wszelkich stara(cid:241), aby wszystkie modu(cid:239)y Pythona dzia(cid:239)a(cid:239)y w wirtualnej maszynie Javy, mimo wszystko mo(cid:285)na dostrzec pewne ró(cid:285)nice. Najwi(cid:218)ksza polega na tym, (cid:285)e rozszerzenia stworzone w j(cid:218)zyku C nie b(cid:218)d(cid:200) dzia(cid:239)a(cid:239)y w Jythonie; jednak wi(cid:218)kszo(cid:258)(cid:202) modu(cid:239)ów Pythona b(cid:218)dzie dzia(cid:239)a(cid:202) prawid(cid:239)owo w Jythonie bez modyfikacji. Rozszerzenia napisane w j(cid:218)zyku C nale(cid:285)y ponownie przepisa(cid:202) w j(cid:218)zyku Java, aby zapewni(cid:202) ich prawid(cid:239)owe dzia(cid:239)anie. Kod Jythona dzia(cid:239)a doskonale w (cid:258)rodowisku Javy, natomiast u(cid:285)ycie standardowego kodu CPython (domy(cid:258)lne (cid:258)rodowisko Pythona) mo(cid:285)e powodowa(cid:202) problemy. Mimo wszystko kod Jythona b(cid:218)dzie normalnie dzia(cid:239)a(cid:239) bez (cid:285)adnych przeszkód w (cid:258)rodowisku CPython, o ile nie wykorzystuje jakiegokolwiek sposobu integracji z Jav(cid:200). (cid:81) IronPython. Jest to Python dla opracowanej przez Microsoft platformy .NET Framework. Program IronPython mo(cid:285)e wykorzystywa(cid:202) mo(cid:285)liwo(cid:258)ci oferowane przez .NET Framework, a tak(cid:285)e zwyk(cid:239)e biblioteki Pythona. Ponadto inne j(cid:218)zyki .NET, na przyk(cid:239)ad C#, mog(cid:200) implementowa(cid:202) kod IronPythona. Z powodu wspomnianej funkcjonalno(cid:258)ci .NET IronPython to doskona(cid:239)e narz(cid:218)dzie dla programistów Windowsa lub programistów systemów UNIX i Linux u(cid:285)ywaj(cid:200)cych (cid:258)rodowiska Mono. Zwyk(cid:239)e projekty Pythona mog(cid:200) by(cid:202) opracowywane w IronPythonie. Programi(cid:258)ci zyskuj(cid:200) równie(cid:285) mo(cid:285)liwo(cid:258)(cid:202) u(cid:285)ycia Pythona zamiast innych j(cid:218)zyków skryptowych, takich jak VBScript i PowerShell. Opracowane przez Microsoft 72 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona (cid:258)rodowisko programistyczne, Visual Studio, ma wtyczk(cid:218) o nazwie Python Tools, która pozwala wykorzysta(cid:202) pe(cid:239)n(cid:200) funkcjonalno(cid:258)(cid:202) Visual Studio podczas tworzenia kodu Pythona. IronPython jest dost(cid:218)pny jedynie dla wydania Python 2.7. Nie zosta(cid:239) jeszcze przeniesiony dla wydania Python 3. Zastosowanie narz(cid:218)dzi takich jak 3to2 nie gwarantuje poprawno(cid:258)ci dzia(cid:239)ania ze wzgl(cid:218)du na ró(cid:285)nice w naturze wyda(cid:241) Pythona 2 i 3. (cid:81) Stackless Python. Jest to usprawniona wersja Pythona koncentruj(cid:200)ca si(cid:218) na poprawieniu programowania opartego na w(cid:200)tkach bez wprowadzania zwyk(cid:239)ych komplikacji zwi(cid:200)zanych z w(cid:200)tkami Pythona. Wykorzystuj(cid:200)c mikrow(cid:200)tki, Stackless ma na celu udoskonalenie struktury programu, znaczne poprawienie czytelno(cid:258)ci kodu wielow(cid:200)tkowego i zwi(cid:218)kszenie produktywno(cid:258)ci programisty. Te usprawnienia zosta(cid:239)y osi(cid:200)gni(cid:218)te przez unikni(cid:218)cie zwyk(cid:239)ego stosu wywo(cid:239)a(cid:241) C i wykorzystanie w(cid:239)asnego stosu zarz(cid:200)dzanego przez interpreter. Mikrow(cid:200)tki obs(cid:239)uguj(cid:200) wykonywanie zada(cid:241) programu w tym samym procesorze. W ten sposób otrzymujemy alternatyw(cid:218) dla tradycyjnych metod programowania asynchronicznego. To eliminuje obci(cid:200)(cid:285)enie zwi(cid:200)zane z wielow(cid:200)tkowo(cid:258)ci(cid:200) programów dzia(cid:239)aj(cid:200)cych w jednym procesorze, poniewa(cid:285) nie ma opó(cid:283)nienia zwi(cid:200)zanego z prze(cid:239)(cid:200)czaniem mi(cid:218)dzy trybem u(cid:285)ytkownika i j(cid:200)dra. Mikrow(cid:200)tki wykorzystuj(cid:200) tak zwane tasklety do przedstawiania ma(cid:239)ych zada(cid:241) w w(cid:200)tku Pythona i mog(cid:200) by(cid:202) stosowane zamiast tradycyjnych w(cid:200)tków lub procesów. Dwukierunkowa komunikacja mi(cid:218)dzy mikrow(cid:200)tkami jest obs(cid:239)ugiwana przez kana(cid:239)y, a harmonogram zada(cid:241) jest definiowany w konfiguracji rotacyjnej. Dlatego harmonogram zada(cid:241) taskletów mo(cid:285)e wspó(cid:239)pracowa(cid:202) z innymi komponentami systemu lub rezerwowa(cid:202) zasoby na wy(cid:239)(cid:200)czno(cid:258)(cid:202). Wreszcie serializacja dost(cid:218)pna za pomoc(cid:200) modu(cid:239)u pickle Pythona pozwala na opó(cid:283)nione wznowienie mikrow(cid:200)tku. Jedn(cid:200) z wad Stacklessa jest to, (cid:285)e cho(cid:202) mikrow(cid:200)tki stanowi(cid:200) usprawnienie wzgl(cid:218)dem zwyk(cid:239)ych w(cid:200)tków Pythona, to jednak nie eliminuj(cid:200) globalnej blokady interpretera. Ponadto tasklety znajduj(cid:200) si(cid:218) w pojedynczym w(cid:200)tku, wielow(cid:200)tkowo(cid:258)(cid:202) i wieloprocesowo(cid:258)(cid:202) nie jest obs(cid:239)ugiwana. Innymi s(cid:239)owy nie mamy do czynienia z prawdziwym przetwarzaniem równoleg(cid:239)ym, lecz jedynie z wielozadaniowo(cid:258)ci(cid:200) w ramach pojedynczego procesora wspó(cid:239)dzielonego mi(cid:218)dzy tasklety. To jest taka sama funkcjonalno(cid:258)(cid:202) jak wielow(cid:200)tkowo(cid:258)(cid:202) oferowana przez Pythona. Aby wykorzysta(cid:202) wspó(cid:239)bie(cid:285)no(cid:258)(cid:202) mi(cid:218)dzy wieloma procesorami, komunikacja mi(cid:218)dzyprocesowa musi by(cid:202) skonfigurowana ponad procesami Stacklessa. Wreszcie z powodu zmian wprowadzonych w kodzie (cid:283)ród(cid:239)owym Pythona, aby zaimplementowa(cid:202) mikrow(cid:200)tki, Stacklessa nie mo(cid:285)na zainstalowa(cid:202) na bazie istniej(cid:200)cej instalacji Pythona. Dlatego pe(cid:239)na instalacja Stacklessa musi pozosta(cid:202) oddzielna od wszelkich innych dystrybucji Pythona. (cid:81) MicroPython. Jest to okrojona wersja Pythona 3.4 zaprojektowana do u(cid:285)ycia z mikrokontrolerami i systemami osadzonymi. Wprawdzie MicroPython oferuje wi(cid:218)kszo(cid:258)(cid:202) funkcji standardowego Pythona, ale zawiera drobne zmiany w j(cid:218)zyku, 73 Kup książkęPoleć książkę Python ninja. 70 sekretnych receptur i taktyk programistycznych aby go lepiej przystosowa(cid:202) do mikrokontrolerów. Kluczow(cid:200) cech(cid:200) MicroPythona jest to, (cid:285)e mo(cid:285)na go uruchomi(cid:202), maj(cid:200)c do dyspozycji jedynie 16 KB pami(cid:218)ci RAM, a jego kod (cid:283)ród(cid:239)owy zajmuje tylko 256 KB miejsca na dysku. Dost(cid:218)pny jest unikatowy mikrokontroler, pyboard, zaprojektowany do u(cid:285)ycia wraz z MicroPythonem. Ten mikrokontroler jest podobny do Raspberry Pi, przy czym jest jeszcze mniejszy. Mimo wszystko wci(cid:200)(cid:285) ma 30 pinów GPIO, cztery wbudowane diody LED, przy(cid:258)pieszeniomierz i wiele innych komponentów. Poniewa(cid:285) zosta(cid:239) zaprojektowany do u(cid:285)ycia z MicroPythonem, w zasadzie otrzymujesz Python OS przeznaczony do dzia(cid:239)ania w mikrokontrolerze. Instalowanie Pythona w Windowsie W porównaniu do systemów z rodziny UNIX i Linux dostarczanych standardowo wraz z zainstalowanym Pythonem system operacyjny Windows nie zawiera domy(cid:258)lnie Pythona. Na szcz(cid:218)(cid:258)cie mo(cid:285)na pobra(cid:202) pakiet instalacyjny w formacie MSI przygotowany dla ró(cid:285)nych wersji Windowsa. Tak zainstalowany Python jest przeznaczony do u(cid:285)ycia przez jednego u(cid:285)ytkownika, a nie wszystkich u(cid:285)ytkowników danego komputera. Jednak w trakcie instalacji mo(cid:285)na wybra(cid:202) opcj(cid:218) pozwalaj(cid:200)c(cid:200) wszystkim u(cid:285)ytkownikom komputera uzyska(cid:202) dost(cid:218)p do Pythona. Zaczynamy Poniewa(cid:285) Python zawiera przygotowany dla ró(cid:285)nych systemów operacyjnych kod charaktery- styczny dla platformy (aby zminimalizowa(cid:202) ilo(cid:258)(cid:202) zb(cid:218)dnego kodu), obs(cid:239)uguje systemy operacyjne Windows dopóty, dopóki s(cid:200) obs(cid:239)ugiwane przez firm(cid:218) Microsoft. To obejmuje równie(cid:285) wyd(cid:239)u(cid:285)on(cid:200) obs(cid:239)ug(cid:218) i dlatego produkty uznawane przez Microsoft za nieobs(cid:239)ugiwane nie b(cid:218)d(cid:200) tak(cid:285)e obs(cid:239)u- giwane przez Pythona. U(cid:285)ytkownik systemu Windows XP lub starszego nie mo(cid:285)e zainstalowa(cid:202) (cid:285)adnej nowszej wersji Pythona ni(cid:285) 3.4. Zgodnie z informacjami zamieszczonymi w dokumentacji Pythona w systemie Windows Vista mo(cid:285)na zainstalowa(cid:202) Pythona w wersji 3.6 lub nowszej. Poniewa(cid:285) oficjalna obs(cid:239)uga systemu Windows Vista przez Microsoft zako(cid:241)czy(cid:239)a si(cid:218) w roku 2017, tak(cid:285)e kolejne wydania Pythona nie b(cid:218)d(cid:200) dzia(cid:239)a(cid:239)y w tym systemie operacyjnym. Ponadto trzeba zna(cid:202) architek- tur(cid:218) u(cid:285)ywanego procesora: 32- lub 64-bitowy. Wprawdzie oprogramowanie 32-bitowe dzia(cid:239)a w systemie 64-bitowym, ale na odwrót ju(cid:285) nie. Poza tym do dyspozycji s(cid:200) dwa rodzaje plików instalacyjnych — do instalacji offline i online. W przypadku tej pierwszej pakiet instalacyjny zawiera wszystkie komponenty niezb(cid:218)dne do przeprowadzenia instalacji standardowej, a dost(cid:218)p do internetu jest potrzebny tylko do pobrania funkcji opcjonalnych. Z kolei pakiet instalacji internetowej jest mniejszy od wersji offline i umo(cid:285)liwia u(cid:285)ytkownikowi wybór funkcji do zainstalowania, które nast(cid:218)pnie zostan(cid:200) pobrane z internetu. 74 Kup książkęPoleć książkę Rozdzia(cid:225) 2. • Zastosowanie interpretera Pythona Jak to zrobi(cid:202)? 1. Pierwsze uruchomienie pakietu instalacyjnego w Windowsie pozwala na wybór jednej z dwóch opcji: instalacji domy(cid:258)lnej lub niestandardowej. Wybierz domy(cid:258)ln(cid:200), gdy wyst(cid:218)puj(cid:200) nast(cid:218)puj(cid:200)ce czynniki: (cid:81) Instalacj(cid:218) przeprowadzasz tylko dla siebie i inni u(cid:285)ytkownicy komputera nie musz(cid:200) mie(cid:202) dost(cid:218)pu do Pythona. (cid:81) Chcesz zainstalowa(cid:202) jedynie bibliotek(cid:218) standardow(cid:200) Pythona, zestaw testowy, narz(cid:218)dzie pip i program uruchamiaj(cid:200)cy Pythona w systemie Windows. (cid:81) Zwi(cid:200)zane z Pythonem skróty s(cid:200) dost(cid:218)pne jedynie dla bie(cid:285)(cid:200)cego u(cid:285)ytkownika. 2. Zdecyduj si(cid:218) na instalacj(cid:218) niestandardow(cid:200), je(cid:285)eli chcesz zachowa(cid:202) wi(cid:218)ksz(cid:200) kontrol(cid:218) nad tym procesem. W szczególno(cid:258)ci dotyczy to sytuacji, gdy wyst(cid:218)puj(cid:200) nast(cid:218)puj(cid:200)ce czynniki: (cid:81) Chcesz zainstalowa(cid:202) konkretne sk(cid:239)adniki Pythona. (cid:81) Chcesz zmieni(cid:202) miejsce instalacji Pythona. (cid:81) Chcesz zainstalowa(cid:202) symbole debugowania lub pliki binarne. (cid:81) Chcesz przeprowadzi(cid:202) instalacj(cid:218) dla wszystkich u(cid:285)ytkowników systemu. (cid:81) Chcesz wst(cid:218)pnie skompilowa(cid:202) bibliotek(cid:218) standardow(cid:200) na kod bajtowy. 3. Instalacja niestandardowa wymaga uprawnie(cid:241) u(cid:285)ytkownika administracyjnego. Graficzny interfejs u(cid:285)ytkownika to standardowy sposób instalacji Pythona za pomoc(cid:200) kreatora pozwalaj(cid:200)cego przej(cid:258)(cid:202) przez ca(cid:239)y proces. Ewentualnie mo(cid:285)na u(cid:285)y(cid:202) skryptów wiersza polecenia do zautomatyzowania instalacji w wielu komputerach bez jakiejkolwiek reakcji ze strony u(cid:285)ytkownika. W przypadku instalacji z poziomu wiersza polecenia podczas uruchamiania pliku .exe dost(cid:218)pnych jest kilka opcji: python-3.6.0.exe /quiet # GUI nie b(cid:266)dzie wy(cid:286)wietlone, nast(cid:261)pi instalacja podstawowa Pythona ... /passive # Pomini(cid:266)cie u(cid:298)ytkownika podczas instalacji, ale wy(cid:286)wietlenie # informacji o post(cid:266)pie i b(cid:225)(cid:266)dach ... /uninstall # Natychmiastowe rozpocz(cid:266)cie usuwania Pythona, wy(cid:286)wietlenie pytania # potwierdzaj(cid:261)cego operacj(cid:266) Stosowanie programu uruchamiaj(cid:200)cego Pythona w Windowsie Pocz(cid:200)wszy od wydania Pythona 3.3, wraz z j(cid:218)zykiem zostaje domy(cid:258)lnie zainstalowany program umo(cid:285)liwiaj(cid:200)cy uruchomienie Pythona. Ten program pozwala skryptom Pythona lub wiersza po- lecenia Windowsa na okre(cid:258)lenie konkretnej wersji Pythona oraz na jej odszukanie i uruchomienie. Gdy masz zainstalowane wydanie Pythona 3.3 lub nowsze, program uruchamiaj(cid:200)cy jest zgodny ze wszystkimi wersjami Pythona. Wybierze najbardziej odpowiedni(cid:200) wersj(cid:218) j(cid:218)zyka dla skryp
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Python ninja. 70 sekretnych receptur i taktyk programistycznych
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: