-
Notifications
You must be signed in to change notification settings - Fork 11
/
abop-ptbr.html
9315 lines (7520 loc) · 380 KB
/
abop-ptbr.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>A Byte of Python</title>
</head>
<body>
<div class="python book">
<h1 id="ch_indice">Índice</h1>
<ul>
<li><a href="#ch_prefacio">Prefácio</a></li>
<li><a href="#ch_introducao">Introdução</a></li>
<li><a href="#ch_instalacao">Instalação</a></li>
<li><a href="#ch_primeiros_passos">Primeiros Passos</a></li>
<li><a href="#ch_fundamentos">Fundamentos</a></li>
<li><a href="#ch_operadores_e_expressoes">Operadores e
Expressões</a></li>
<li><a href="#ch_controle_de_fluxo">Controle de Fluxo</a></li>
<li><a href="#ch_funcoes">Funções</a></li>
<li><a href="#ch_modulos">Módulos</a></li>
<li><a href="#ch_estruturas_de_dados">Estruturas de Dados</a></li>
<li><a href="#ch_resolucao_de_problemas">Resolução de Problemas</a></li>
<li><a href="#ch_programacao_orientada_a_objetos">Programação Orientada a
Objetos</a></li>
<li><a href="#ch_entrada_e_saida">Entrada e Saída</a></li>
<li><a href="#ch_biblioteca_padrao">Biblioteca Padrão</a></li>
<li><a href="#ch_mais">Mais</a></li>
<li><a href="#ch_em_seguida">Em Seguida</a></li>
<li><a href="#ch_floss">Apêndice: FLOSS</a></li>
<li><a href="#ch_sobre">Apêndice: Sobre</a></li>
<li><a href="#ch_historico_de_revisoes">Apêndice: Histórico de
Revisões</a></li>
<li><a href="#ch_sobre_a_traducao">Sobre a Tradução</a></li>
</ul>
<h1 id="ch_prefacio">Prefácio</h1>
<p>Python é provavelmente uma das poucas linguagens de programação que são
ao mesmo tempo simples e poderosas. Isso é bom tanto para iniciantes quanto
para programadores avançados e, mais importante, é divertida de programar.
Este livro visa ajudá-lo a aprender essa linguagem maravilhosa e mostrar
como fazer as coisas de modo rápido e indolor - de fato 'O Antídoto
Perfeito para seus problemas de programação'.</p>
<table id="toc" class="toc">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Conteúdo</h2>
</div>
<ul>
<li class="toclevel-1 tocsection-1"><a href=
"#A_Quem_Se_Destina_Este_Livro"><span class="tocnumber">1</span>
<span class="toctext">A Quem Se Destina Este
Livro</span></a></li>
<li class="toclevel-1 tocsection-2"><a href=
"#Li.C3.A7.C3.A3o_de_Hist.C3.B3ria"><span class=
"tocnumber">2</span> <span class="toctext">Lição de
História</span></a></li>
<li class="toclevel-1 tocsection-3"><a href=
"#Status_do_Livro"><span class="tocnumber">3</span> <span class=
"toctext">Status do Livro</span></a></li>
<li class="toclevel-1 tocsection-4"><a href=
"#Site_Oficial"><span class="tocnumber">4</span> <span class=
"toctext">Site Oficial</span></a></li>
<li class="toclevel-1 tocsection-5"><a href=
"#Licen.C3.A7a"><span class="tocnumber">5</span> <span class=
"toctext">Licença</span></a></li>
<li class="toclevel-1 tocsection-6"><a href=
"#Feedback"><span class="tocnumber">6</span> <span class=
"toctext">Feedback</span></a></li>
<li class="toclevel-1 tocsection-7"><a href=
"#Algo_Para_Pensar"><span class="tocnumber">7</span> <span class=
"toctext">Algo Para Pensar</span></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2><span class="mw-headline" id="A_Quem_Se_Destina_Este_Livro">A Quem Se
Destina Este Livro</span></h2>
<p>Este livro serve como guia ou tutorial da linguagem de programação
Python. Ele é destinado principalmente a iniciantes, mas é também é útil
para programadores experientes.</p>
<p>O objetivo é que, se tudo o que você sabe sobre computadores é como
salvar arquivos de texto, então você possa também aprender Python com este
livro.</p>
<p>Se você tem experiência prévia com programação, pode se interessar pelas
diferenças entre Python e sua linguagem de programação favorita - coloquei
em destaque muitas delas. No entanto, uma pequena advertência: logo Python
vai se tornar sua linguagem de programação favorita!</p>
<h2><span class="mw-headline" id="Li.C3.A7.C3.A3o_de_Hist.C3.B3ria">Lição
de História</span></h2>
<p>Primeiramente, eu iniciei no Python quando eu precisei escrever um
instalador para um programa que eu escrevi chamado 'Diamond', para que eu
pudesse instalá-lo facilmente. Eu tive que escolher entre as referências
Python e Perl para a biblioteca Qt. Eu fiz algumas pesquisas na internet e
encontrei um artigo onde Eric S. Raymond, um hacker famoso e respeitado,
falou como o Python tornou-se sua linguagem de programação favorita. Eu
também descobri que as referências PyQt eram mais maduras quando coparadas
às Perl-Qt. Assim, eu decidi que o Python era a melhor linguagem para
mim.</p>
<p>Logo, eu comecei a pesquisar por um bom livro sobre Python. Eu não
consegui encontrar nenhum! Eu achei alguns livros da O'Reilly, mas eles ou
eram muito caros ou pareciam mais com um manual de referência do que com um
guia. Assim, eu optei pela documentação que vinha com o Python. Entretanto,
ela era muito breve e pequena. Eu tive uma boa noção sobre o Python, mas
não era completa. Eu me saí bem, pois eu tinha uma experiência prévia em
programação, mas a documentação era inadequada para novatos.</p>
<p>Cerca de seis meses após a minha primeira luta com o Python, eu instalei
a (até então) última distribuição Linux, Red Hat 9.0, e eu estava
aprendendo entusiasmado o KWord. Eu o adorei e imediatamente tive a ideia
de escrever alguma coisa em Python. Eu comecei escrevendo umas poucas
páginas, mas elas tornaram-se rapidamente um documento de 30 páginas.
Então, eu tornei séria a ideia de transformá-lo em algo mais útil na forma
de um livro. Após uma "grande quantidade" de reescritas, o livro atingiu um
estágio onde ele se tornou um guia útil de aprendizado da linguagem Python.
Eu considero que este livro é minha contribuição e meu tributo à comunidade
do código fonte aberto.</p>
<p>Este livro começou a partir das minhas notas pessoais em Python e eu
ainda o considero da mesma maneira, embora eu tenha consumido muito esforço
para torná-lo mais agradável aos outros. :)</p>
<p>No espírito verdadeiro do código fonte aberto, eu recebi muitas
sugestões construtivas, críticas e <a href=
"http://www.swaroopch.org/notes/User:Swaroop" title=
"User:Swaroop">comentários</a> de leitores entusiastas que me ajudaram
muito a melhorar este livro.</p>
<h2><span class="mw-headline" id="Status_do_Livro">Status do
Livro</span></h2>
<p>As mudanças desde a última grande revisão de Março de 2005 são
referentes à <a href=
"http://www.swaroopch.org/notes/Python_en:Appendix_Changes_for_Python_3000"
title="Python en:Appendix Changes for Python 3000">atualização</a> para o
<a href=
"http://www.swaroopch.org/notes/Python_en:Introduction#About_Python_3.0"
title="Python en:Introduction">lançamento do Python 3.0</a> (esperado para
Agosto/Setembro de 2008). Uma vez que a linguagem Python 3.0 em si ainda
não foi finalizada/disponibilizada, este livro passará por
constantes mudanças. No entanto, de acordo com o espírito da filosofia open
source do "Release Early, Release Often" (entregar cedo e com frequência),
o livro atualizado foi lançado e está sendo atualizado constantemente.</p>
<p>O livro precisa da ajuda de leitores como vocês para apontar quaisquer
partes do livro que não estejam boas, incompreensíveis ou simplesmente
erradas. Por favor, escreva para o <a href=
"http://www.swaroopch.com/contact/" class="external text" rel=
"nofollow">autor principal</a> ou para os respectivos <a href=
"http://www.swaroopch.org/notes/Python_en:Translations" title=
"Python en:Translations">tradutores</a> com seus comentários e
sugestões.</p>
<p>É um esforço constante equilibrar este livro entre as necessidades dos
iniciantes e a tendência no sentido de completude da informação. Seria útil
se os leitores também dessem sua opinião sobre o quanto este livro deve se
aprofundar.</p>
<h2><span class="mw-headline" id="Site_Oficial">Site Oficial</span></h2>
<p>O site oficial do livro é <a href=
"http://www.swaroopch.com/notes/Python" class="external free" rel=
"nofollow">http://www.swaroopch.com/notes/Python</a> . No site você pode
ler o livro na íntegra ou pode baixar as suas últimas versões e também me
enviar sua opinião.</p>
<h2><span class="mw-headline" id="Licen.C3.A7a">Licença</span></h2>
<ol>
<li>Este livro é licenciado sob a licença <a href=
"http://creativecommons.org/licenses/by-nc-sa/3.0/" class="external text"
rel="nofollow">Creative Commons Attribution-Noncommercial-Share Alike
3.0 Unported</a>.
<ul>
<li>Isto significa que:
<ul>
<li>Você é livre para Compartilhar, isto é, distribuir e
transmitir este livro.</li>
<li>Você é livre para Remixar, isto é, adaptar este livro.</li>
</ul>
</li>
<li>Sob as seguinte condições:
<ul>
<li>Atribuição. Você deve atribuir o trabalho da maneira
especificada pelo autor ou licenciador (mas não de forma a
sugerir que eles endossam você ou o uso que fizer deste
livro).</li>
<li>Uso não comercial. Você não pode usar este livro para fins
comerciais.</li>
<li>Compartilhamento pela mesma Licença. Se você alterar
transformar ou se basear neste trabalho, você só pode distribuir
a obra resultante por esta mesma licença.</li>
</ul>
</li>
<li>Para qualquer reuso ou distribuição, os termos de licença deste
livro devem estar claros.</li>
<li>Qualquer uma das condições acima pode ser desconsiderada caso
você obtenha a permissão do detentor dos direitos.</li>
<li>Nada nesta licença limita ou restringe os direitos morais do
autor.</li>
</ul>
</li>
<li>A atribuição <i>deve</i> ser exibida através de link para <a href=
"http://www.swaroopch.com/notes/Python" class="external free" rel=
"nofollow">http://www.swaroopch.com/notes/Python</a> e a indicação clara
de que o texto original pode ser obtido neste local.</li>
<li>Todo o código/scripts fornecidos neste livro estão licenciados sob a
<a href="http://www.opensource.org/licenses/bsd-license.php" class=
"external text" rel="nofollow">3-clause BSD License</a>, a menos que
indicado de outro modo.</li>
<li>Contribuições voluntárias para este livro original devem estar sob
esta mesma licença <i>e</i> o copyright deve ser atribuído para o
<a href="http://www.swaroopch.org/notes/User:Swaroop" title=
"User:Swaroop">autor principal deste livro</a>.</li>
</ol>
<h2><span class="mw-headline" id="Feedback">Feedback</span></h2>
<p>Coloquei um bocado de esforço para fazer este livro o mais interessante
e preciso quanto foi possível. No entanto, caso você ache que alguma parte
do material esteja inconsistente, incorreta ou simplesmente precise
melhorar, então por favor me informe, para que eu possa fazer as melhorias
cabíveis. Você pode me contactar através da minha <a href=
"http://www.swaroopch.org/notes/User:Swaroop" title="User:Swaroop">página
de usuário</a>.</p>
<h2><span class="mw-headline" id="Algo_Para_Pensar">Algo Para
Pensar</span></h2>
<blockquote>
Existem duas maneiras de construir um projeto de software: uma é fazê-lo
tão simples a ponto de que, obviamente, não haja deficiências; a outra é
fazê-lo tão complicado de modo que não haja deficiências óbvias.<br>
-- C. A. R. Hoare
</blockquote>
<blockquote>
Sucesso na vida é menos uma questão de talento e oportunidade quanto é de
concentração e perseverança.<br>
-- C. W. Wendte
</blockquote>
<h1 id="ch_introducao">Introdução</h1>
<table id="toc" class="toc">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Conteúdo</h2>
</div>
<ul>
<li class="toclevel-1 tocsection-1"><a href=
"#Introdu.C3.A7.C3.A3o"><span class="tocnumber">1</span>
<span class="toctext">Introdução</span></a></li>
<li class="toclevel-1 tocsection-2"><a href=
"#Caracter.C3.ADsticas_de_Python"><span class=
"tocnumber">2</span> <span class="toctext">Características de
Python</span></a></li>
<li class="toclevel-1 tocsection-3"><a href=
"#Por_que_n.C3.A3o_Perl.3F"><span class="tocnumber">3</span>
<span class="toctext">Por que não Perl?</span></a></li>
<li class="toclevel-1 tocsection-4"><a href=
"#Por_que_n.C3.A3o_Ruby.3F"><span class="tocnumber">4</span>
<span class="toctext">Por que não Ruby?</span></a></li>
<li class="toclevel-1 tocsection-5"><a href=
"#O_Que_Os_Programadores_Dizem"><span class="tocnumber">5</span>
<span class="toctext">O Que Os Programadores
Dizem</span></a></li>
<li class="toclevel-1 tocsection-6"><a href=
"#Sobre_Python_3.0"><span class="tocnumber">6</span> <span class=
"toctext">Sobre Python 3.0</span></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2><span class="mw-headline" id=
"Introdu.C3.A7.C3.A3o">Introdução</span></h2>
<p>Python é uma dessas raras linguagens em que se pode alegar ser ao mesmo
tempo <b>simples</b> e <b>poderosa</b>. Você vai se surpreender ao
descobrir o quanto é fácil se concentrar na solução para o problema em vez
da sintaxe e estrutura da linguagem que você está programando.</p>
<p>A introdução oficial para Python é:</p>
<blockquote>
Python é uma poderosa linguagem de programação fácil de aprender. Possui
eficientes estruturas de dados de alto nível e uma simples e efetiva
abordagem para programação orientada a objetos. A elegante sintaxe e a
tipagem dinâmica de Python, aliada a sua natureza interpretada, faz dela
uma linguagem ideal para criar <i>scripts</i> e desenvolver aplicações de
modo ágil em diversas áreas e na maioria das plataformas.
</blockquote>
<p>Vou detalhar a maioria dessas características na próxima seção.</p>
<dl>
<dt>Nota</dt>
<dd>Guido van Rossum, criador da linguagem Python, cujo nome foi baseado
na série "Monty Python's Flying Circus" da BBC. Ele, particularmente, não
gosta de cobras que para se alimentar, esmagam outros animais usando seu
extenso corpo.</dd>
</dl>
<h2><span class="mw-headline" id=
"Caracter.C3.ADsticas_de_Python">Características de Python</span></h2>
<dl>
<dt>Simples</dt>
</dl>
<dl>
<dd>Python é uma linguagem simples e minimalista. Ler um bom programa em
Python é quase como ler em inglês, ainda que seja um inglês bem restrito.
Este caráter de pseudo-código do Python é um de seus maiores pontos
fortes. Ele permite que você se concentre na solução do problema e não na
linguagem em si.</dd>
</dl>
<dl>
<dt>Fácil de Aprender</dt>
</dl>
<dl>
<dd>Como você verá, é extremamente fácil iniciar-se em Python. A
linguagem possui uma sintaxe extraordinariamente simples, como já
mencionado.</dd>
</dl>
<dl>
<dt>Livre e de Código Aberto</dt>
</dl>
<dl>
<dd>Python é um exemplo de FLOSS (Free/Libre and Open Source Software).
Traduzindo, você pode distribuir livremente cópias deste software, ler
seu código-fonte, modificá-lo, usar trechos em novos programas livres e
tudo o que você quiser fazer. FLOSS é baseado no conceito de uma
comunidade que compartilha conhecimento. Este é um dos motivos pelos
quais Python é tão bom - ele vem sendo criado e constantemente melhorado
por uma comunidade que simplesmente quer ver a Python cada vez
melhor.</dd>
</dl>
<dl>
<dt>Linguagem de Alto Nível</dt>
</dl>
<dl>
<dd>Quando você escreve programas em Python, não há necessidade de se
preocupar com detalhes de baixo nível tais como manipular a memória
utilizada pelo programa, etc.</dd>
</dl>
<dl>
<dt>Portável</dt>
</dl>
<dl>
<dd>Por ser uma linguagem de código aberto, Python foi portada (ou seja,
modificada para funcionar) em muitas plataformas. Todos os seus programas
em Python podem rodar em qualquer uma destas plataformas sem precisar de
mudanças, desde que você seja cuidadoso o suficiente para evitar usar
características que dependam do sistema.</dd>
</dl>
<dl>
<dd>Você pode usar Python em Linux, Windows, FreeBSD, Macintosh, Solaris,
OS/2, Amiga, AROS, AS/$)), BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion,
Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE e até mesmo
no PocketPC!</dd>
</dl>
<dl>
<dt>Interpretada</dt>
</dl>
<dl>
<dd>Isto requer uma pequena explicação</dd>
</dl>
<dl>
<dd>Um programa escrito em uma linguagem compilada como C ou C++ é
convertido da linguagem de origem (C ou C++) para a linguagem que é
falada por seu computador (código binário, ou seja, 0s e 1s) usando um
compilador com vários flags e opções. Quando você roda o programa, o
software linkeditor/carregador copia o programa do disco rígido para a
memória e começa a executá-lo.</dd>
</dl>
<dl>
<dd>Python, por sua vez, não necessita de compilação para código binário.
Você simplemente executa o programa diretamente do código-fonte.
Internamente, Python converte o código-fonte em um formato intermediário
chamado bytecode, o traduz para a linguagem nativa do seu computador e
então o executa. Tudo isso, na verdade, torna Python muito mais fácil,
uma vez que você não precisa se preocupar com a compilação do programa,
certificar-se que as bibliotecas necessárias estão todas linkeditadas e
carregadas etc, etc. Isto também torna seus programas em Python muito
mais portáveis, já que você pode simplesmente copiar seu programa em
Python em outro computador e executá-lo!</dd>
</dl>
<dl>
<dt>Orientada a Objetos</dt>
</dl>
<dl>
<dd>Python suporta tanto programação procedural (estruturada) quanto
orientada a objetos. Em linguagens procedurais, o programa é construído
com base em procedimentos e funções, que nada mais são que trechos
reutilizáveis de programas. Em linguagens orientadas a objeto, com base
em objetos que combinam dados e funcionalidade. Python tem uma maneira
simples mas poderosa de implementar programação orientada a objetos,
especialmente quando comparada a linguagens como C++ ou Java.</dd>
</dl>
<dl>
<dt>Extensível</dt>
</dl>
<dl>
<dd>Se você precisa que um trecho crítico de código seja executado com
muita rapidez ou quer que parte de algum algoritmo não seja aberta, você
pode codificá-los em C ou C++ e então usá-los a partir de seu programa
Python.</dd>
</dl>
<dl>
<dt>Embarcável</dt>
</dl>
<dl>
<dd>Você pode embarcar Python em seus programas C/C++ para fornecer
funcionalidades de scripting aos usuários dos programas.</dd>
</dl>
<dl>
<dt>Bibliotecas Extensivas</dt>
</dl>
<dl>
<dd>A Biblioteca Padrão do Python (Python Standard Library) é de fato
enorme. Ela pode ajudá-lo a fazer várias coisas envolvendo expressões
regulares, geração de documentação, testes unitários, threading, acesso a
bancos de dados, browsers web, CGi, FTP, e-mail, XML, XML-RPC, HTML,
arquivos WAV, criptografia, GUI (Interfaces Gráficas com o Usuário), Tk e
outras coisas dependentes do sistema. Lembre-se de que tudo isto está
disponível onde quer que Python esteja instalado. Esta é a chamada
filosofia das "Pilhas Incluídas" do Python.</dd>
</dl>
<dl>
<dd>Além da biblioteca padrão, existem várias outras bibliotecas de alta
qualidade, tais comos <a href="http://www.wxpython.org/" class=
"external text" rel="nofollow">wxPython</a> , <a href=
"http://www.twistedmatrix.com/" class="external text"
rel="nofollow">Twisted</a>, <a href=
"http://www.pythonware.com/products/pil/index.htm" class="external text"
rel="nofollow">Python Imaging Library</a> e muitas outras.</dd>
</dl>
<p>Python é, de fato, uma linguagem poderosa e empolgante. Ela possui a
combinação exata de desempenho e características que fazem escrever
programas em Python uma tarefa fácil e divertida.</p>
<h2><span class="mw-headline" id="Por_que_n.C3.A3o_Perl.3F">Por que não
Perl?</span></h2>
<p>Se você ainda não conhece, Perl é outra linguagem de programação
interpretada e de código aberto extremamente popular.</p>
<p>Se você alguma vez tentou escrever um programa grande em Perl, você
poderia ter respondido essa pergunta sozinho! Em outras palavras, programas
em Perl são fáceis quando eles são pequenos e são excelentes para pequenos
"hacks" e scripts "pra fazer o serviço". No entanto, eles se tornam
rapidamente difíceis de manter à medida em que se tornam maiores. E estou
falando isso com base na minha experiência no Yahoo! escrevendo programas
grandes em Perl.</p>
<p>Quando comparados a Perl, os programas em Python são definitivamente
mais simples, claros, fáceis de escrever e, consequentemente, mais legíveis
e fáceis de manter. Eu admiro Perl e uso diariamente para várias tarefas,
mas toda vez que escrevo um programa, começo a pensar em termos de Python,
porque se tornou natural para mim. Perl passou por tantos hacks e mudanças
que parece que a linguagem toda é um grande (mas ótimo) hack. Infelizmente,
o futuro Perl 6 não parece trazer nenhuma melhoria quanto a isso.</p>
<p>A única e bastante significativa vantagem do Perl, na minha opinião, é
sua enorme biblioteca <a href="http://cpan.perl.org/" class="external text"
rel="nofollow">CPAN</a> (Comprehensive Perl Archive Network). Como o nome
sugere, é uma imensa coleção de módulos Perl e é simplesmente
inacreditável, por causa de seu tamanho e profundidade - você pode fazer
praticamente qualquer coisa que seja possível de se fazer com um computador
usando estes módulos. Uma das razões pelas quais Perl tem mais bibliotecas
que Python é o fato de existir há muito mais tempo. No entanto, isto parece
estar mudando com o crescimento do <a href="http://pypi.python.org/pypi"
class="external text" rel="nofollow">Python Package Index</a>.</p>
<h2><span class="mw-headline" id="Por_que_n.C3.A3o_Ruby.3F">Por que não
Ruby?</span></h2>
<p>Se você ainda não sabia, Ruby é uma outra popular linguagem de
programação de código aberto.</p>
<p>Se você já gosta e usa Ruby, então eu definitivamente recomendo que
continue a usá-la.</p>
<p>Para as outras pessoas que ainda não a usaram e estão tentando escolher
entre aprender Python ou aprender Ruby, então eu recomendaria Python,
unicamente pela perspectiva de facilidade de aprendizado. Pessoalmente,
achei difícil compreender a linguagem Ruby, mas todas as pessoas que
conseguem aprovam a beleza da linguagem. Infelizmente não tive tanta
sorte.</p>
<h2><span class="mw-headline" id="O_Que_Os_Programadores_Dizem">O Que Os
Programadores Dizem</span></h2>
<p>É interessante ler o que grandes hackers como ESR têm a dizer sobre
Python:</p>
<ul>
<li><b>Eric S. Raymond</b> é o autor de 'A Catedral e o Bazar' e também é
o indivíduo que cunhou o termo 'Open Source'. Ele diz que <a href=
"http://www.linuxjournal.com/article.php?sid=3882" class="external text"
rel="nofollow">Python se tornou sua linguagem de programação
favorita</a>. Este artigo foi a real inspiração para meu primeiro contato
com Python.</li>
</ul>
<ul>
<li><b>Bruce Eckel</b> é o autor dos famosos livros 'Thinking in Java' e
'Thinking in C++'. Ele diz que nenhuma outra linguagem o deixou tão
produtivo quanto Python. Diz ainda que Python é talvez a única linguagem
que se concentra em tornar as coisas mais fáceis para o programador. Leia
a <a href="http://www.artima.com/intv/aboutme.html" class="external text"
rel="nofollow">entrevista completa</a> para mais detalhes.</li>
</ul>
<ul>
<li><b>Peter Norvig</b> é o conhecido autor do Lisp e Diretor de
Qualidade de Busca no google (obrigado a Guido van Rossum por avisar).
Ele diz que Python sempre foi parte integrante do Google. Esta afirmação
pode ser comprovada verificando a página do <a href=
"http://www.google.com/jobs/index.html" class="external text" rel=
"nofollow">Google Jobs</a> que lista conhecimento em Python como
requisito para os engenheiros de software.</li>
</ul>
<h2><span class="mw-headline" id="Sobre_Python_3.0">Sobre Python
3.0</span></h2>
<p>Python 3.0 é a nova versão da linguagem que será lançada em breve.
Também é conhecida como Python 3000 ou Py3k.</p>
<p>A motivação principal para uma nova versão de Python é remover todos os
pequenos problemas e detalhes que foram se acumulando no decorrer dos anos
e tornar a linguagem ainda mais limpa.</p>
<p>Se você já tem muito código Python 2.x, então existe um <a href=
"http://docs.python.org/3.0/library/2to3.html" class="external text"
rel="nofollow">utilitário para ajudar na conversão de código 2.x para
3.x</a>.</p>
<p>Mais detalhes em:</p>
<ul>
<li><a href="http://www.artima.com/weblogs/viewpost.jsp?thread=208549"
class="external text" rel="nofollow">Introdução por Guido van
Rossum</a></li>
<li><a href="http://docs.python.org/dev/whatsnew/2.6.html" class=
"external text" rel="nofollow">O que há de novo no Python 2.6</a>
(recursos significativamente diferentes das versões anteriores de Python
2.x e que provavelmente serão incluídos no Python 3.0)</li>
<li><a href="http://docs.python.org/3.0/whatsnew/3.0.html" class=
"external text" rel="nofollow">O que há de novo no Python 3.0</a></li>
<li><a href="http://www.python.org/dev/peps/pep-0361/" class=
"external text" rel="nofollow">Cronograma de lançamento do Python 2.6 e
3.0</a></li>
<li><a href="http://www.python.org/dev/peps/pep-3000/" class=
"external text" rel="nofollow">Python 3000</a> (a lista oficial de
mudanças propostas)</li>
<li><a href="http://www.python.org/dev/peps/pep-3100/" class=
"external text" rel="nofollow">Planos diversos para Python 3.0</a></li>
<li><a href="http://www.python.org/download/releases/3.0/NEWS.txt" class=
"external text" rel="nofollow">Novidades do Python</a> (lista detalhada
das mudanças)</li>
</ul>
<h1 id="ch_instalacao">Instalação</h1>
<p>Se você já tem o Python 2.x instalado, não é preciso removê-lo para
instalar o Python 3.0. Você pode manter ambos instalados ao mesmo
tempo.</p>
<table id="toc" class="toc">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Conteúdo</h2>
</div>
<ul>
<li class="toclevel-1 tocsection-1"><a href=
"#Para_usu.C3.A1rios_Linux_e_BSD"><span class=
"tocnumber">1</span> <span class="toctext">Para usuários Linux e
BSD</span></a></li>
<li class="toclevel-1 tocsection-2">
<a href="#Para_usu.C3.A1rios_Windows"><span class=
"tocnumber">2</span> <span class="toctext">Para usuários
Windows</span></a>
<ul>
<li class="toclevel-2 tocsection-3"><a href=
"#Prompt_do_DOS"><span class="tocnumber">2.1</span>
<span class="toctext">Prompt do DOS</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-4"><a href=
"#Para_usu.C3.A1rios_MAC_OS_X"><span class="tocnumber">3</span>
<span class="toctext">Para usuários MAC OS X</span></a></li>
<li class="toclevel-1 tocsection-5"><a href=
"#Sum.C3.A1rio"><span class="tocnumber">4</span> <span class=
"toctext">Sumário</span></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2><span class="mw-headline" id="Para_usu.C3.A1rios_Linux_e_BSD">Para
usuários Linux e BSD</span></h2>
<p>Se você está usando uma distribuição Linux como Ubuntu, Fedora, OpenSUSE
ou {coloque sua escolha aquí}, ou um sistema BSD tal como FreeBSD, então é
provável que você já tenha o Python instalado em seu sistema.</p>
<p>Para testar se o Python já está instalado em seu Linux, abra um shell
(como <tt>konsole</tt> ou <tt>gnome-terminal</tt>) e então entre com o
comando <tt>python -V</tt> como mostrado abaixo:</p>
<pre>
$ python -V
Python 3.0b1
</pre>
<dl>
<dt>Nota</dt>
<dd><tt>$</tt> é o prompt do shell. Ele será diferente para você
dependendo das configurações do seu sistema operacional, portanto eu
indicarei o prompt apenas pelo símbolo <tt>$</tt>.</dd>
</dl>
<p>Se você vê alguma informação sobre a versão, como mostrado acima, então
o Python já está instalado.</p>
<p>Contudo, se você obtiver uma mensagem como esta:</p>
<pre>
$ python -V
bash: Python: command not found
</pre>
<p>Então o Python não está instalado. Isto é altamente improvável, mas é
possível.</p>
<p>Neste caso, você tem dois meios para instalar o Python em seu
sistema:</p>
<ul>
<li>Você pode compilar o <a href=
"http://www.python.org/download/releases/3.0/" class="external text" rel=
"nofollow">código fonte</a> do Python e então instalá-lo. As instruções
para a compilação são informadas no website do Python.</li>
<li>Instalar os pacotes binários usando um gerenciador de pacotes que vem
com o seu sistema operacional, tal como <tt>apt-get</tt> no Ubuntu/Debian
e outros Linux baseados em Debian, <tt>yum</tt> no Fedora,
<tt>pkg_add</tt> no FreeBSD, etc. Você precisará de uma conexão com a
Internet para usar este método. Uma alternativa é baixar os binários de
algum outro lugar e então copiá-los e instalá-los em seu PC. [Esta opção
estará disponível após o lançamento final do Python 3.0]</li>
</ul>
<h2><span class="mw-headline" id="Para_usu.C3.A1rios_Windows">Para usuários
Windows</span></h2>
<p>Visite o site <a href="http://www.python.org/download/releases/3.0/"
class="external free" rel=
"nofollow">http://www.python.org/download/releases/3.0/</a> e baixe a
última versão, que era a versão <a href=
"http://www.python.org/ftp/python/3.0/python-3.0b1.msi" class=
"external text" rel="nofollow">3.0 beta 1</a>, quando este livro foi
escrito. Ele tem apenas 12.8 MB, o que é bem compacto quando comparado com
a maioria das outras linguagens ou programas.</p>
<dl>
<dt>Cuidado</dt>
<dd>Quando for dada a opção para você desmarcar componentes opcionais,
não desmaque nenhum! Alguns destes componentes podem ser úteis para
você, especialmente IDLE.</dd>
</dl>
<p>Um fato interessante é que usuários Windows são os que mais baixam os
arquivos do Python. É claro que isso não fornece uma visão geral, uma vez
que quase todos os usuários Linux já têm o Python instalado por padrão em
seus sistema.</p>
<h3><span class="mw-headline" id="Prompt_do_DOS">Prompt do DOS</span></h3>
<p>Se você quer ser capaz de usar o Python da linha de comando do Windows,
i.e. o prompt do DOS, então você precisa configurar a variável PATH
corretamente.</p>
<p>Pra usuários Windows 2000, XP ou 2003, clique em <tt>Painel de
Controle</tt> -> <tt>Sistema</tt> -> <tt>Avançado</tt> ->
<tt>Variáveis de ambiente</tt>. Clique na variável chamada <b>PATH</b> na
seção 'Variáveis de Sistema', então selecione <tt>Editar</tt> e
adicione ;C:\Python30 no fim do que já estiver lá. É claro que você
deve usar o diretório correto onde você instalou o Python.</p>
<p>Para versões antigas do Windows, adicione as seguintes linhas no arquivo
<tt>C:\AUTOEXEC.BAT</tt> : <tt>'PATH=%PATH%;C:\Python30'</tt> (sem as
aspas) e reinicie o sistema. Em Windows NT use o arquivo
<tt>AUTOEXEC.NT</tt>.</p>
<h2><span class="mw-headline" id="Para_usu.C3.A1rios_MAC_OS_X">Para
usuários MAC OS X</span></h2>
<p>Usuários Mac OS X já encontrarão o Python instalado em seu sistema. Abra
o <tt>Terminal.app</tt> e rode <tt>python - V</tt>, e siga os conselhos da
seção para usuários Linux.</p>
<h2><span class="mw-headline" id="Sum.C3.A1rio">Sumário</span></h2>
<p>Em um sistema Linux, é provável que você já tenha o Python instalado.
Caso contrário, você pode instalá-lo usando o gerenciador de pacotes que
vem com sua distribuição. Em um sistema Windows, instalar o Python é tão
fácil como baixar o instalador e clicar duas vezes sobre ele. Daqui para
frente nós assumiremos que você já está com o Python instalado em seu
sistema.</p>
<p>A seguir nós escreveremos nosso primeiro programa em Python.</p>
<h1 id="ch_primeiros_passos">Primeiros Passos</h1>
<table id="toc" class="toc">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Conteúdo</h2>
</div>
<ul>
<li class="toclevel-1 tocsection-1"><a href=
"#Introdu.C3.A7.C3.A3o"><span class="tocnumber">1</span>
<span class="toctext">Introdução</span></a></li>
<li class="toclevel-1 tocsection-2"><a href=
"#Usando_o_Prompt_do_Interpretador"><span class=
"tocnumber">2</span> <span class="toctext">Usando o Prompt do
Interpretador</span></a></li>
<li class="toclevel-1 tocsection-3"><a href=
"#Escolhendo_um_Editor"><span class="tocnumber">3</span>
<span class="toctext">Escolhendo um Editor</span></a></li>
<li class="toclevel-1 tocsection-4">
<a href="#Usando_um_Arquivo_Fonte"><span class=
"tocnumber">4</span> <span class="toctext">Usando um Arquivo
Fonte</span></a>
<ul>
<li class="toclevel-2 tocsection-5"><a href=
"#Como_ele_Funciona"><span class="tocnumber">4.1</span>
<span class="toctext">Como ele Funciona</span></a></li>
<li class="toclevel-2 tocsection-6"><a href=
"#Programas_Execut.C3.A1veis_em_Python"><span class=
"tocnumber">4.2</span> <span class="toctext">Programas
Executáveis em Python</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-7"><a href=
"#Obtendo_Ajuda"><span class="tocnumber">5</span> <span class=
"toctext">Obtendo Ajuda</span></a></li>
<li class="toclevel-1 tocsection-8"><a href=
"#Sum.C3.A1rio"><span class="tocnumber">6</span> <span class=
"toctext">Sumário</span></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2><span class="mw-headline" id=
"Introdu.C3.A7.C3.A3o">Introdução</span></h2>
<p>Nós veremos agora como rodar o tradicional programa 'Olá Mundo' em
Python. Isto ensinará a você como escrever, salvar e rodar programas no
Python.</p>
<p>Há duas formas de usar o Python para rodar um programa - usando o prompt
do interpretador interativo ou usando um arquivo fonte. Nós veremos como
usar os dois métodos.</p>
<h2><span class="mw-headline" id="Usando_o_Prompt_do_Interpretador">Usando
o Prompt do Interpretador</span></h2>
<p>Inicie o interpretador na linha de comando digitando <tt>python</tt>
prompt do shell.</p>
<p>Em sistemas Windows, você pode rodar o interpretador na linha de comando
se a variável <tt>PATH</tt> estiver corretamente configurada.</p>
<p>Se você está usando o IDLE, clique em <tt>Iniciar</tt> →
<tt>Programas</tt> → <tt>Python 3.0</tt> → <tt>IDLE (Python GUI)</tt>.</p>
<p>Agora digite <tt>print('Olá Mundo')</tt> e em seguida pressione a tecla
<tt>Enter</tt>. Você verá as palavras <tt>Olá Mundo</tt> como saída.</p>
<pre>
$ python
Python 3.0b2 (r30b2:65106, Jul 18 2008, 18:44:17) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Olá Mundo')
Olá Mundo
>>>
</pre>
<p>Perceba que o Python mostra a saída da linha imediatamente! O que você
acabou de digitar é uma simples <i>instrução</i>. Nós usamos <tt>print</tt>
para imprimir qualquer valor que você forneça. Aqui, nós estamos fornecendo
o texto <tt>Olá Mundo</tt> e este é imediatamente impresso na tela.</p>
<dl>
<dt>Como Sair do Interpretador</dt>
<dd>Para sair do prompt, pressione <tt>ctrl-d</tt> se você está usando o
IDLE ou o shell do Linux/BSD. No caso do prompt de comando do Windows,
pressione <tt>ctrl-z</tt> seguido da tecla <tt>enter</tt>.</dd>
</dl>
<h2><span class="mw-headline" id="Escolhendo_um_Editor">Escolhendo um
Editor</span></h2>
<p>Antes de começarmos a escrever programas em arquivos fonte, nós
precisamos de um editor para escrever estes arquivos. A escolha de um
editor é crucial. Você deve escolher o editor como se você fosse escolher
um carro novo. Um bom editor o ajudará a escrever programas para Python
facilmente, fazendo sua jornada mais confortável e te ajudando a chegar em
seu destino (atingindo seu objetivo) de uma forma fácil e segura.</p>
<p>Uma das necessidades mais básicas é o <b>destaque de sintaxe</b> que
torna colorida todas as diferentes partes de seu programa, de forma que
você possa <i>ver</i> seu programa e visualizar seu funcionamento.</p>
<p>Se você está usando o Windows, eu sugiro que você use o IDLE. O IDLE
destaca a sintaxe e permite que você rode seus programas dentro dele mesmo,
além de fazer outras coisas. Uma observação especial: <b>Não use o
Notepad</b> - é uma má escolha pois ele não destaca a sintaxe e também não
tem suporte a indentação do texto, que é muito importante no nosso caso,
como veremos adiante. Bons editores tais como o IDLE (e também o VIM)
automaticamente o ajudarão a fazer isso.</p>
<p>Se você está usando Linux/FreeBSD, então você tem diversas escolhas para
um editor. Se você é um programador experiente, então você já deve estar
usando <tt>Vim</tt> ou <tt>Emacs</tt>. É desnecessário dizer que estes são
dois dos mais poderosos editores e que você será beneficiado por usá-los
para escrever seus programas em Python. Eu pessoalmente uso <tt>Vim</tt>
para a maioria de meus programas. Se você é um programador iniciante, você
pode usar o <tt>Kate</tt>, que é um dos meus favoritos. No caso de você ter
tempo para aprender <tt>Vim</tt> ou <tt>Emacs</tt>, então eu realmente
recomendo que você aprenda a usar um deles, pois será de grande utilidade
para você em sua longa jornada.</p>
<p>Neste livro, nós usaremos o <b>IDLE</b>, nosso IDE (<i>Integrated
Development Environment</i> - Ambiente Integrado de Desenvolvimento) como
editor. O IDLE é instalado por padrão com os instaladores Python para
Windows e Mac OS X. Ele também está disponível para instalação em <a href=
"http://love-python.blogspot.com/2008/03/install-idle-in-linux.html" class=
"external text" rel="nofollow">Linux</a> e BSDs nos seus respectivos
repositórios.</p>
<p>Nós exploraremos como usar o IDLE na próxima seção. Para mais detalhes,
por favor veja a <a href="http://www.python.org/idle/doc/idlemain.html"
class="external text" rel="nofollow">documentação do IDLE</a>.</p>
<p>Se você ainda deseja explorar outras escolhas para um editor, veja a
ampla <a href="http://www.python.org/cgi-bin/moinmoin/PythonEditors" class=
"external text" rel="nofollow">lista de editores para Python</a> e faça sua
escolha. Você também pode escolher um IDE para Python. Veja a ampla
<a href="http://www.python.org/cgi-bin/moinmoin/IntegratedDevelopmentEnvironments"
class="external text" rel="nofollow">lista de IDEs que suportam Python</a>
para mais detalhes. Uma vez que você passe a escrever grandes programas em
Python, IDEs podem ser muito úteis.</p>
<p>Eu repito novamente, por favor escolha um editor apropriado - ele pode
fazer a elaboração de programas em Python mais fácil e divertida.</p>
<dl>
<dt>Para usuários do Vim</dt>
<dd>Há uma boa introdução sobre como <a href=
"http://www.sontek.net/blog/2011/05/07/turning_vim_into_a_modern_python_ide.html"
class="external text" rel="nofollow">tornar o Vim um poderoso IDE para Python
por John M Anderson</a>.</dd>
<dt>Para usuários do Emacs</dt>
<dd>Há uma boa introdução sobre como <a href=
"http://www.enigmacurry.com/2008/05/09/emacs-as-a-powerful-python-ide/"
class="external text" rel="nofollow">tornar o Emacs um poderoso IDE para
Python por Ryan McGuire</a>.</dd>
</dl>
<h2><span class="mw-headline" id="Usando_um_Arquivo_Fonte">Usando um
Arquivo Fonte</span></h2>
<p>Agora vamos voltar a programação. Há uma tradição de que quando você
aprende uma nova linguagem de programação, o primeiro programa que você