David M. Beazley
PYTHONWydawnictwo RM
L
Prorrram
Programowanie: Python
David M. Beazley
Tłumaczenie: Janusz Machowski
Translation copyright © 2002 by Wydawnictwo RM
Original English language title: Python Essential Reference, by David M. Beazley
by Pearson Education, Inc., Copyright © 2001 by New Riders Publishing. All rights reserved.
Published by arrangement with the original publisher, New Riders Publishing.
Wydawnictwo RM, 00-987 Warszawa 4, skr. poczt. 144
[email protected]
www.rm.com.pl
Żadna część tej pracy nie może być powielana i rozpowszechniana, w jakiejkolwiek formie i w jakikolwiek sposób (elektronicz-
ny, mechaniczny) włącznie z fotokopiowaniem, nagrywaniem na taśmy lub przy użyciu innych systemów, bez pisemnej zgody
wydawcy.
Wszystkie nazwy handlowe i towarów występujące w niniejszej publikacji są znakami towarowymi zastrzeżonymi lub nazwami
zastrzeżonymi odpowiednich firm odnośnych właścicieli.
Nazwy i adresy firm, nazwiska i adresy osób, nazwy towarów i inne dane wykorzystane w przykładach są fikcyjne i jakakolwiek
zbieżność z rzeczywistością jest wyłącznie przypadkowa.
Wydawnictwo RM dołożyło wszelkich starań, aby zapewnić najwyższą jakość tej książce. Jednakże nikomu nie udziela żadnej
rękojmi ani gwarancji. Wydawnictwo RM nie jest w żadnym przypadku odpowiedzialne za jakąkolwiek szkodę (łącznie ze szko-
dami z tytułu utraty zysków związanych z prowadzeniem przedsiębiorstwa, przerw w działalności przedsiębiorstwa lub utraty
informacji gospodarczej) będącą następstwem korzystania z informacji zawartych w niniejszej publikacji, nawet jeśli Wydaw-
nictwo RM zostało zawiadomione o możliwości wystąpienia szkód.
ISBN 83-7243-218-X
Redaktor prowadzący: Danuta Cyrul
Redakcja: Krystyna Knap
Korekta: Mirosława Szymańska
Projekt graficzny okładki: Grażyna Jędrzejec
Redaktor techniczny: Elżbieta Giżyńska
Skład: Artur Wolke
Druk i oprawa: Oficyna Wydawnicza READ ME - Drukarnia w Lodzi
Wydanie I
Warszawa 2002
10987654321
Moim rodzicom
Spis treściWstęp..................................................XVII
Co jest w książce?.........................................XVII
Stosowane konwencje......................................XVIII
Witryna WWW..........................................XVIII
Rozdział 1: Wprowadzenie do języka..................................1
Uruchamianie programów w Pythonie...............................1
Zmienne i wyrażenia arytmetyczne.................................3
Instrukqe warunkowe........................................4
Pliki wejściowe i wyjściowe.....................................5
Napisy.................................................5
Listy i tupie...............................................6
Pętle...................................................8
Słowniki................................................9
Funkqe................................................10
Klasy.................................................11
Wyjątki................................................11
Moduły................................................12
Rozdział 2: Konwencje leksykalne i składnia.............................15
Struktura linii i wcięcia.......................................15
Identyfikatory i słowa zarezerwowane..............................16
Literały................................................17
Operatory, ograniczniki i symbole speqalne...........................20
Napisy dokumentacyjne......................................20
Rozdział 3: Typy i obiekty....................................... 21
Terminologia............................................. 21
Tożsamość i typ obiektu....................................... 22
Zliczanie odniesień i odzyskiwanie pamięci............................ 22
Odniesienia i kopie.......................................... 23
Typywbudowane.......................................... 24
Typ None............................................. 25
Typy numeryczne........................................ 25
Typy sekwencyjne........................................ 26
Typy mapujące.......................................... 30
Typy wy woły walne....................................... 31
Moduły.............................................. 33
Klasy............................................... 34
Instanqeklas........................................... 34
Pliki................................................ 35
Typy wewnętrzne........................................ 35
Metody speqalne........................................... 37
Tworzenie, usuwanie i reprezentowanie obiektów..................... 37
Dostęp do atrybutów...................................... 38
Metody sekwencji i mapowania................................ 39
Operacje matematyczne.................................... 41
VIII
Python
Operacje porównania......................................43
Obiekty wywoływalne.....................................44
Uwagi na temat wydajności i pamięci...............................44
Rozdział 4: Operatory i wyrażenia...................................47
Działania na liczbach........................................47
Działania na sekwenq'ach......................................49
Działania na słownikach.......................................53
Przypisania rozszerzone......................................53
Operator atrybutu (.).........................................54
Konwersja typów.........................................54
Napisy Unicode...........................................55
Wyrażenia i wartości boolowskie..................................58
Równość i tożsamość obiektów...................................58
Kolejność obliczeń..........................................58
Rozdział 5: Przepływ sterowania....................................61
Warunki................................................61
Pętle..................................................61
Wyjątki................................................63
Definiowanie nowych wyjątków..................................66
Aserqe i wartość__debug__....................................67
Rozdział 6: Funkcje i programowanie funkcjonalne.........................69
Funkqe................................................69
Przekazywanie parametrów i wartości powrotnych.......................71
Reguły obowiązywania zasięgu..................................72
Rekurencja..............................................73
Funkcja applyO............................................73
Operator lambda...........................................74
map(), zip(), reduceO i filterO....................................74
Wybieranie listowe..........................................75
eval(), execO, execfileO i compileO.................................76
Rozdział 7: Klasy i programowanie obiektowe............................79
Instrukqa class............................................79
Instanqe klasy............................................80
Zliczanie odniesień i usuwanie instanqi..............................81
Dziedziczenie.............................................82
Polimorfizm.............................................83
Ukrywanie informaqi........................................83
Przeciążanie operatorów......................................84
Klasy, typy i sprawdzanie przynależności.............................85
Rozdział 8: Moduły i pakiety......................................87
Moduły................................................87
Ścieżka poszukiwań modułu....................................89
Ładowanie i kompilowanie modułów...............................89
Przeładowywanie modułu.....................................90
Pakiety................................................91
Rozdział 9: Wejście i wyjście......................................95
Czytanie opq'i i zmiennych środowiskowych...........................95
Pliki..................................................96
Standardowe strumienie: wejściowy, wyjściowy i diagnostyczny...............98
Instrukqa print............................................99
Przechowywanie obiektów....................................100
Spis treści
IX
Wejście/wyjście z użyciem Unicode...............................100
Kodowanie danych Unicode.................................102
Właściwości znaków Unicode................................104
Rozdział 10: Środowisko wykonania programu........................... 105
Opqe interpretera i środowisko.................................. 105
Sesje interakcyjne.......................................... 107
Uruchamianie aplikaqi napisanych w Pythonie......................... 108
Pliki konfiguracyjne środowiska................................. 108
Udostępnianie nowych możliwości................................ 109
Kończenie działania programu.................................. 109
Dodatek A: Biblioteka Pythona....................................111
Funkqe i wyjątki wbudowane...................................112
Funkqe wbudowane......................................112
Wyjątki wbudowane......................................119
Usługi Pythona...........................................122
atexit...............................................122
copy...............................................122
copy_reg............................................123
gc.................................................124
marshal.............................................125
new...............................................126
operator.............................................126
piekle i cPickle.........................................127
site...............................................130
sys................................................131
traceback............................................134
types...............................................135
warnings............................................136
weakref.............................................138
UserDict, UserList i UserString................................141
Matematyka.............................................142
array...............................................142
cmath..............................................144
math...............................................144
random.............................................145
Obsługa napisów..........................................147
codecs..............................................147
re.................................................151
string..............................................157
StringlOicStringlO......................................160
struct...............................................160
unicodedata...........................................162
Zarządzanie danymi i trwałe przechowywanie obiektów....................165
anydbm.............................................166
bsddb..............................................167
dbhash..............................................168
dbm...............................................168
dumbdbm............................................168
gdbm..............................................169
shelve..............................................169
whichdb.............................................170
Usługi systemu operacyjnego...................................171
commands...........................................171
crypt...............................................172
Python
errno...............................................172
fcntl...............................................177
filecmp..............................................179
fileinput.............................................181
findertools...........................................182
fnmatch.............................................182
getopt..............................................183
getpass..............................................184
gettext..............................................184
glob...............................................187
grp................................................188
gzip...............................................188
locale...............................................189
macfs..............................................190
macostools...........................................194
mmap..............................................195
msvcrt..............................................197
os.................................................198
os.path..............................................213
popen2..............................................215
pwd...............................................216
readline.............................................217
resource.............................................218
shutil...............................................219
signal..............................................220
stat................................................223
statvfs..............................................224
tempfile.............................................224
termios.............................................225
time...............................................229
tty................................................232
_winreg.............................................232
zipfile..............................................235
zlib................................................238
Wątki.................................................240
Podstawy wątków.......................................240
WątkiwPythonie.......................................241
thread..............................................241
threading............................................242
Queue..............................................248
Programowanie sieciowe.....................................249
asyncore.............................................252
BaseHTTPServer........................................255
cgi................................................258
CGIHTTPServer........................................262
Cookie..............................................262
ftplib...............................................265
httplib..............................................266
imaplib.............................................271
nntplib..............................................272
poplib..............................................272
robotparser...........................................272
select...............................................273
SimpleHTTPServer......................................274
Spis treści
XI
smtplib.............................................275
socket..............................................275
SocketServer..........................................282
urllib...............................................284
urlparse.............................................286
webbrowser...........................................287
Obsługa i kodowanie danych internetowych..........................287
base64..............................................288
binascii.............................................288
binhex..............................................289
mailcap.............................................290
mimetools............................................290
mimetypes...........................................292
MimeWriter...........................................295
multifile.............................................297
quopri..............................................299
rfc822..............................................299
uu................................................302
xdrlib..............................................302
Działanie w trybie ograniczonym.................................305
rexec...............................................306
Bastion..............................................309
Inne moduły.............................................310
bisect...............................................310
cmd...............................................310
md5...............................................313
sha................................................313
shlex...............................................314
DebugerPythona..........................................315
Profiler Pythona...........................................318
profile..............................................318
pstats..............................................319
Moduły nieudokumentowane...................................320
Usługi Pythona.........................................320
Przetwarzanie napisów....................................321
Moduły systemu operacyjnego................................321
Sieć................................................321
Obsługa danych internetowych...............................321
Usługi multimedialne.....................................322
SGIIrix.............................................322
Usługi specyficzne dla Sun-a.................................322
Różne..............................................322
Dodatek B: Rozszerzanie i osadzanie Pythona...........................323
Udostępnianie dodatkowych modułów.............................323
Przykład modułu rozszerzenia................................324
Kompilowanie rozszerzeń.....................................326
Konwertowanie danych z Pythona na C.............................328
Konwertowanie danych z C na Pythona.............................331
Obsługabłędów...........................................333
Zliczanie odwołań.........................................335
Wywoływanie Pythona z poziomu C...............................336
Warstwa obiektów abstrakcyjnych................................337
Funkqe niskiego poziomu dla typów wbudowanych......................341
XII
Python
Definiowanie nowych typów................................... 345
Metody specjalne typów...................................... 352
Wątki................................................. 356
Osadzanie.............................................. 356
Narzędzia do budowy rozszerzeń................................ 358
Extension Classes....................................... 358
Boost Python Library..................................... 359
Dodatek C: Podsumowanie zmian..................................361
Pythonl.6..............................................361
Python2.0..............................................361
Python2.1..............................................362
Indeks..................................................363
0 autorze
David M. Beazley jest autorem SWIG, popularnego pakietu oprogramowania
umożliwiającego integrowanie programów C z różnymi językami interpretowa-
nymi, łącznie z Pythonem, Perlem i Tcl. Od 1996 roku jest związany ze społeczno-
ścią Pythona i aktualnie pracuje nad projektami dotyczącymi debugowania
w trybie mieszanym rozszerzeń języków skryptowych. Dave spędził kilka lat
pracując w Dziale Fizyki Teoretycznej w Los Alamos National Laboratory, gdzie
pomagał w pionierskim wykorzystaniu Pythona do uruchamiania wysoko wy-
dajnego oprogramowania symulacyjnego na komputerach równoległych.
Obecnie jest pracownikiem naukowym Wydziału Informatyki Uniwersytetu Chi-
cagowskiego, gdzie prowadzi zajęcia z systemów operacyjnych, sieci i kom-
pilatorów. Można się z nim skontaktować pisząc na adres beazleydcs.uchica-
go.edu.
O recenzentach
Do drugiego* wydania tej książki znaczny wkład wnieśli jej dwaj recenzenci:
Paul F. Dubois i Mats Wichmann. Kiedy już były gotowe wszystkie rozdziały,
przejrzeli je pod kątem zawartości i kompozyqi. Ich uwagi miały istotne znacze-
nie dla zapewnienia książce najwyższego poziomu i sprostania zapotrzebowa-
niu użytkowników na dobre źródło informacji technicznej.
Paul F. Dubois ukończył matematykę na Uniwersytecie Kalifornijskim w Berke-
ley. W1970 roku uzyskał doktorat z matematyki na Uniwersytecie Kalifornijskim
w Davis. Po sześciu latach pracy naukowo-dydaktycznej zatrudnił się w 1976
roku w Lawrence Livemore National Laboratory. Piastował tam szereg stano-
wisk jako specjalista od informatyki i metod numerycznych. Od 1999 roku
uczestniczy w Programie Diagnozowania i Porównywania Modeli Klimatycz-
nych w Dziale Badań Atmosferycznych, gdzie używa Pythona do tworzenia na-
rzędzi dla modeli...