Skip to content

Commit e3baf38

Browse files
committed
errata, vários issues
1 parent 9346190 commit e3baf38

File tree

15 files changed

+59
-58
lines changed

15 files changed

+59
-58
lines changed

online/cap01.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ____
88
O senso estético de Guido para o design de linguagens é incrível.
99
Conheci muitos projetistas capazes de criar linguagens teoricamente lindas,
1010
que ninguém jamais usaria.
11-
Mas Guido é uma daquelas raras pessoas capaz de criar uma linguagem só um pouco menos teoricamente linda que,
11+
Mas Guido é uma daquelas raras pessoas capazes de criar uma linguagem só um pouco menos teoricamente linda que,
1212
por isso mesmo, é uma delícia para programar.
1313
footnote:[Traduzido de
1414
https://fpy.li/1-1[Story of Jython] (EN),
@@ -18,7 +18,7 @@ https://fpy.li/1-2[Jython Essentials]
1818
____
1919

2020
Uma das melhores qualidades de Python é sua consistência.
21-
Após trabalhar com Python por algum tempo é possível intuir, de modo informado e correto,
21+
Após trabalhar com Python por algum tempo, é possível intuir, de modo informado e correto,
2222
o funcionamento de recursos que você acabou de conhecer.
2323

2424
Entretanto, se você aprendeu outra linguagem orientada a objetos antes de Python,
@@ -94,9 +94,9 @@ pois é uma introdução ao Modelo de Dados de Python, que é muito estável.
9494
As mudanças mais significativas foram:
9595

9696
* Métodos especiais que suportam programação assíncrona e outras novas funcionalidades
97-
foram acrescentados às tabelas em <<overview_special_methods>>.
97+
foram acrescentados às tabelas na <<overview_special_methods>>.
9898

99-
* A <<collection_uml>>, mostrando o uso de métodos especiais em <<collection_api>>,
99+
* A <<collection_uml>>, mostrando o uso de métodos especiais na <<collection_api>>,
100100
incluindo a classe base abstrata `collections.abc.Collection`, introduzida no Python 3.6.
101101

102102
Além disso, aqui((("f-string syntax", "benefits of"))) e por toda essa segunda edição,
@@ -343,7 +343,7 @@ Escreve `len(my_object)` e, se `my_object` é uma instância de uma classe defin
343343
então Python chama o método `+__len__+` que você implementou.
344344

345345
Mas o interpretador pega um atalho quando está lidando com um tipo embutido como `list`, `str`, `bytearray`,
346-
ou extensões compiladas como os arrays do NumPy.
346+
ou extensões compiladas como os arrays da NumPy.
347347
As coleções de tamanho variável de Python escritas em C incluem uma
348348
structfootnote:[Uma struct do C é um tipo de registro com campos nomeados.]
349349
chamada `PyVarObject`, com um campo `ob_size` que registra a quantidade de itens na coleção.
@@ -393,7 +393,7 @@ vetores bi-dimensionais—isto é, vetores euclidianos como aqueles usados em ma
393393
======
394394
O tipo embutido `complex` pode ser usado para representar vetores bi-dimensionais,
395395
mas nossa classe pode ser estendida para representar vetores N-dimensionais.
396-
Faremos isso em <<ch_generators>>.
396+
Faremos isso no <<ch_generators>>.
397397
======
398398

399399
[[vectors_fig]]

online/cap02.adoc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,7 +1458,7 @@ Veja https://fpy.li/2-13["NumPy quickstart"] (EN)
14581458
para saber mais sobre isso.
14591459

14601460
Desconheço usos de `Ellipsis` ou de índices multidimensionais na biblioteca padrão de Python.
1461-
Esses recursos sintáticos existem para suportar tipos definidos pelo usuário ou extensões como o NumPy.
1461+
Esses recursos sintáticos existem para suportar tipos definidos pelo usuário ou extensões como a NumPy.
14621462

14631463
Fatias não são úteis apenas para extrair informações de sequências;
14641464
elas podem também ser usadas para modificar sequências mutáveis no lugar—isto é, sem precisar reconstruí-las do zero.
@@ -1709,13 +1709,13 @@ por compartilharem esse enigma na Conferência PythonBrasil de 2013.]
17091709

17101710
O que acontece a seguir? Escolha a melhor alternativa:
17111711

1712-
A. `t` se torna `(1, 2, [30, 40, 50, 60])`.
1712+
A&#41;:: `t` se torna `(1, 2, [30, 40, 50, 60])`.
17131713

1714-
B. É gerado um `TypeError` com a mensagem `'tuple' object does not support item assignment` (_o objeto tupla não suporta atribuição de itens_).
1714+
B&#41;:: É gerado um `TypeError` com a mensagem `'tuple' object does not support item assignment` (_o objeto tupla não suporta atribuição de itens_).
17151715

1716-
C. As alternativas A e B estão corretas.
1716+
C&#41;:: As alternativas A e B estão corretas.
17171717

1718-
D. Nenhuma das alternativas acima.
1718+
D&#41;:: Nenhuma das alternativas acima.
17191719

17201720

17211721
Quando vi isso, tinha certeza que a resposta era B, mas, na verdade é C: as alternativas A e B estão corretas!
@@ -2585,13 +2585,13 @@ Em((("Soapbox sidebars", "tuples")))((("tuples", "nature of")))((("sequences", "
25852585
Antes de criar Python, Guido van Rossum tinha trabalhado no interpretador ABC, então ele veio ver meu pôster.
25862586
Entre outras coisas, falamos sobre como os _compounds_ (compostos) da ABC,
25872587
predecessores das tuplas de Python.
2588-
Compostos também suportam atribuição paralela e são usados como chaves compostas em dicionários
2588+
Compounds também suportam atribuição paralela e são usados como chaves compostas em dicionários
25892589
(ou _tabelas_, no jargão da ABC).
2590-
Entretanto, compostos não são sequências,
2591-
Eles não são iteráveis, e não é possível obter um campo por índice, muitos menos fatiá-los.
2590+
Entretanto, compounds não são sequências:
2591+
não são iteráveis, e não é possível obter um campo por índice, muitos menos fatiá-los.
25922592
Ou você manuseia o composto inteiro ou extrai os campos individuais usando atribuição paralela, e é isso.
25932593
2594-
Disse a Guido que essas limitações tornavam muito claro o principal propósito dos compostos:
2594+
Disse a Guido que essas limitações tornavam muito claro o principal propósito dos compounds:
25952595
ele são apenas registros sem campos nomeados.
25962596
Sua resposta: "Fazer as tuplas se comportarem como sequências foi uma gambiarra."
25972597

online/cap04.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ uma das várias codificações criadas para línguas asiáticas.
321321

322322
`utf-8`:: A codificação de 8 bits mais comum na web. Em julho de 2021, o
323323
https://fpy.li/4-5[W³ Techs: Usage statistics of character encodings for websites]
324-
informa que 97% dos sites usam UTF-8, um grande avanço sobre os 81,4% de setembro de 2014,
324+
informava que 97% dos sites usam UTF-8, um grande avanço sobre os 81,4% de setembro de 2014,
325325
quando escrevi este capítulo na primeira edição.
326326

327327
`utf-16le`:: Uma forma do esquema de codificação UTF de 16 bits; todas as codificações UTF-16

online/cap05.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ um padrão de programação que pode ser um sintoma de um mau design orientado a
3333
[NOTE]
3434
====
3535
A classe `typing.TypedDict` pode((("TypedDict")))
36-
parecer sintaticamente com um fábrica de classes de dados.
36+
parecer sintaticamente com uma fábrica de classes de dados.
3737
Ela usa uma sintaxe similar, e é descrita pouco após `typing.NamedTuple` na
3838
https://fpy.li/3n[documentação do módulo `typing`] (EN) de Python 3.11.
3939

online/cap11.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ Como revela o <<mem_test_demo>>, o uso de RAM do script cresce para 1,55 GB quan
722722

723723
[TIP]
724724
====
725-
Se você precisa manipular milhões de objetos com dados numéricos, deveria na verdade estar usando os arrays do NumPy (veja a <<numpy_sec>>), que são eficientes no de uso de memória, e também tem funções para processamento numérico extremamente otimizadas, muitas das quais operam sobre o array inteiro ao mesmo tempo. Projetei a classe `Vector2d` apenas como um contexto para a discussão de métodos especiais, pois sempre que possível tento evitar exemplos vagos com `Foo` e `Bar`.
725+
Se você precisa manipular milhões de objetos com dados numéricos, deveria na verdade estar usando os arrays da NumPy (veja a <<numpy_sec>>), que são eficientes no de uso de memória, e também tem funções para processamento numérico extremamente otimizadas, muitas das quais operam sobre o array inteiro ao mesmo tempo. Projetei a classe `Vector2d` apenas como um contexto para a discussão de métodos especiais, pois sempre que possível tento evitar exemplos vagos com `Foo` e `Bar`.
726726
====
727727

728728
[[problems_with_slots]]

online/cap12.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -839,7 +839,7 @@ Não tomei parte na discussão original, e não usaria o trecho acima em código
839839
pois eu também não gosto muito de `lambda`.
840840
Mas eu queria mostrar um exemplo sem uma compreensão de lista.
841841
842-
A primeira resposta veio de Fernando Perez, criador do IPython, e realça como o NumPy suporta arrays _n_-dimensionais e fatiamento _n_-dimensional:
842+
A primeira resposta veio de Fernando Perez, criador do IPython, e realça como a NumPy suporta arrays _n_-dimensionais e fatiamento _n_-dimensional:
843843
844844
[source, python]
845845
----

online/cap13.adoc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,7 +1296,7 @@ False
12961296
----
12971297
====
12981298
<1> `complex64` é um dos cinco tipos de números complexos fornecidos pelo NumPy.
1299-
<2> Nenhum dos tipos complexos do NumPy é subclasse do `complex` embutido.
1299+
<2> Nenhum dos tipos complexos da NumPy é subclasse do `complex` embutido.
13001300
<3> Mas os tipos complexos de NumPy implementam `+__complex__+`, então cumprem o protocolo `SupportsComplex`.
13011301
<4> Portanto, você pode criar objetos `complex` a partir deles.
13021302
<5> Infelizmente, o tipo `complex` embutido não implementa `+__complex__+`, apesar de [.keep-together]#`complex(c)`# funcionar sem problemas se `c` for um `complex`.
@@ -1310,7 +1310,7 @@ isinstance(c, (complex, SupportsComplex))
13101310
----
13111311

13121312
Uma outra alternativa seria usar a ABC `Complex`, definida no módulo `numbers`.
1313-
O tipo embutido `complex` e os tipos `complex64` e `complex128` do NumPy são todos registrados como subclasses virtuais de `numbers.Complex`, então isso aqui funciona:
1313+
O tipo embutido `complex` e os tipos `complex64` e `complex128` da NumPy são todos registrados como subclasses virtuais de `numbers.Complex`, então isso aqui funciona:
13141314

13151315
[source, python]
13161316
----
@@ -1666,7 +1666,7 @@ Para encerrar o capítulo, vamos olhar as ABCs numéricas e sua possível substi
16661666
Como((("static protocols", "numbers ABCS and numeric protocols", id="SPnumbers13")))((("numbers ABCs", id="number13")))((("numeric protocols", id="numpro13")))((("protocols", "numeric", id="Pnum13"))) vimos em <<numeric_tower_warning>>, as ABCs no pacote `numbers` da biblioteca padrão funcionam bem para checagem de tipos durante a execução.
16671667

16681668
Se você precisa verificar um inteiro, pode usar `isinstance(x, numbers.Integral)` para aceitar `int`, `bool` (que é subclasse de `int`) ou outros tipos inteiros oferecidos por bibliotecas externas que registram seus tipos como subclasses virtuais das ABCs de `numbers`.
1669-
Por exemplo, o NumPy tem https://fpy.li/13-39[21 tipos inteiros] — bem como várias variações de tipos de ponto flutuante registrados como `numbers.Real`, e números complexos com várias amplitudes de bits, registrados como `numbers.Complex`.
1669+
Por exemplo, a NumPy tem https://fpy.li/13-39[21 tipos inteiros] — bem como várias variações de tipos de ponto flutuante registrados como `numbers.Real`, e números complexos com várias amplitudes de bits, registrados como `numbers.Complex`.
16701670

16711671
[TIP]
16721672
====
@@ -1709,7 +1709,7 @@ Por alguma razão, ele também implementa `+__int__+`.
17091709
A presença desses métodos faz `isinstance` produzir resultados enganosos no Python 3.9. No Python 3.10, os métodos de `complex` que geravam `TypeError` incondicionalmente foram removidos.footnote:[ver
17101710
https://fpy.li/13-41[Issue #41974—Remove `+complex.__float__+`, `+complex.__floordiv__+`, etc].]
17111711

1712-
Por outro lado, os tipos complexos do NumPy implementam métodos `+__float__+` e `+__int__+` que funcionam,
1712+
Por outro lado, os tipos complexos da NumPy implementam métodos `+__float__+` e `+__int__+` que funcionam,
17131713
emitindo apenas um aviso quando cada um deles é usado pela primeira vez:
17141714

17151715
[source, python]
@@ -1726,8 +1726,8 @@ discards the imaginary part
17261726

17271727
O problema oposto também acontece:
17281728
Os tipos embutidos `complex`, `float`, e `int`, além `numpy.float16` e `numpy.uint8`, não
1729-
tem um método `+__complex__+`, então `isinstance(x, SupportsComplex)` retorna `False` para eles.footnote:[Eu não testei todas as outras variantes de _float_ e _integer_ que o NumPy oferece.]
1730-
Os tipo complexos do NumPy, tal como `np.complex64`, implementam `+__complex__+` para conversão em um `complex` embutido.
1729+
tem um método `+__complex__+`, então `isinstance(x, SupportsComplex)` retorna `False` para eles.footnote:[Eu não testei todas as outras variantes de _float_ e _integer_ que a NumPy oferece.]
1730+
Os tipo complexos da NumPy, tal como `np.complex64`, implementam `+__complex__+` para conversão em um `complex` embutido.
17311731

17321732
Entretanto, na prática, o construtor embutido `complex()` trabalha com instâncias de todos esses tipos sem erros ou avisos.
17331733

@@ -1755,7 +1755,7 @@ def to_complex(n: SupportsComplex) -> complex:
17551755
return complex(n)
17561756
----
17571757

1758-
No momento em que escrevo isso, o NumPy não tem dicas de tipo, então seus tipos numéricos são todos `Any`.footnote:[Os tipos numéricos do NumPy são todos registrados com as ABCs apropriadas de `numbers`, que o Mypy ignora.]
1758+
No momento em que escrevo isso, a NumPy não tem dicas de tipo, então seus tipos numéricos são todos `Any`.footnote:[Os tipos numéricos da NumPy são todos registrados com as ABCs apropriadas de `numbers`, que o Mypy ignora.]
17591759
Por outro lado, o Mypy de alguma maneira "sabe" que o `int` e o `float` embutidos podem ser convertidos para `complex`,
17601760
apesar de, no _typeshed_, apenas a classe embutida `complex` ter o método `+__complex__+`.footnote:[Isso é uma mentira bem intencionada da parte do typeshed: a partir de Python 3.9, o tipo embutido `complex` na verdade não tem mais um método `+__complex__+`.]
17611761

online/cap16.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ BigDecimal interest = principal.multiply(BigDecimal.ONE.add(rate)
2929
----
3030

3131
Está claro que operadores infixos tornam as fórmulas mais legíveis.
32-
A sobrecarga de operadores é necessária para suportar a notação infixa de operadores com tipos definidos pelo usuário ou estendidos, tal como os arrays do NumPy.
32+
A sobrecarga de operadores é necessária para suportar a notação infixa de operadores com tipos definidos pelo usuário ou estendidos, tal como os arrays da NumPy.
3333
Oferecer a sobrecarga de operadores em uma linguagem de alto nível e fácil de usar foi provavelmente uma das principais razões do imenso sucesso de Python na ciência de dados, incluindo as aplicações financeiras e científicas.
3434

3535
Na <<data_model_emulating_sec>> (<<ch_data_model>>) vimos algumas implementações triviais de operadores em uma classe básica `Vector`. Os métodos `+__add__+` e `+__mul__+` no <<ex_vector2d>> foram escritos para demonstrar como os métodos especiais suportam a sobrecarga de operadores, mas deixamos passar problemas sutis naquelas implementações. Além disso, no <<ex_vector2d_v0>> notamos que o método `+Vector2d.__eq__+` considera `True` a seguinte expressão: `Vector(3, 4) == [3, 4]`&#x2014;algo que pode ou não fazer sentido. Nesse capítulo vamos cuidar desses problemas, e((("operator overloading", "topics covered"))) falaremos também de:
@@ -494,13 +494,13 @@ Por anos, o produto escalar no NumPy foi escrito como `numpy.dot(a, b)`.
494494
A notação de invocação de função faz com que fórmulas mais longas sejam difíceis de traduzir da notação matemática para Python,footnote:[Veja o <<operator_soapbox>> para uma discussão desse problema.]
495495
então a comunidade de computação numérica fez campanha pela
496496
https://fpy.li/pep465[PEP 465—A dedicated infix operator for matrix multiplication (_Um operador infixo dedicado para multiplicação de matrizes_)] (EN), que foi implementada no Python 3.5.
497-
Hoje é possível escrever `a @ b` para computar o produto escalar de dois arrays do NumPy.
497+
Hoje é possível escrever `a @ b` para computar o produto escalar de dois arrays da NumPy.
498498

499499
O operador `@` é suportado pelos métodos especiais `+__matmul__+`, `+__rmatmul__+`
500500
e `+__imatmul__+`, cujos nomes derivam de "matrix multiplication" (_multiplicação de matrizes_).
501501
Até Python 3.10, esses métodos não são usados em lugar algum na biblioteca padrão,
502502
mas eles são reconhecidos pelo interpretador desde Python 3.5,
503-
então os desenvolvedores do NumPy--e o resto de nós--podemos implementar o operador `@` em nossas classes.
503+
então os desenvolvedores da NumPy--e o resto de nós--podemos implementar o operador `@` em nossas classes.
504504
O analisador sintático de Python também foi modificado para aceitar o novo operador
505505
(no Python 3.4, `a @ b` era um erro de sintaxe).
506506

online/cap19.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1036,7 +1036,7 @@ https://fpy.li/19-36[TensorFlow] e https://fpy.li/19-37[PyTorch]::
10361036
https://fpy.li/dask[Dask]::
10371037
Uma((("Dask"))) biblioteca de computação paralela que consegue delegar para processos locais ou um cluster de máquinas,
10381038
"testado em alguns dos maiores supercomputadores do mundo"—como seu https://fpy.li/dask[site] (EN) afirma.
1039-
O Dask oferece APIs que emulam muito bem o NumPy, o pandas, e o scikit-learn—hoje as mais populares bibliotecas em ciência de dados e aprendizagem de máquina.
1039+
O Dask oferece APIs que emulam muito bem a NumPy, o pandas, e o scikit-learn—hoje as mais populares bibliotecas em ciência de dados e aprendizagem de máquina.
10401040
O Dask pode ser usado a partir do JupyterLab ou do Jupyter Notebook, e usa o Bokeh
10411041
não apenas para visualização de dados mas também para um quadro interativo mostrando o fluxo de dados e o processamento entre processos/máquinas quase em tempo real.
10421042
O Dask é tão impressionante que recomento assistir um vídeo tal como esse, https://fpy.li/19-39[15-minute demo], onde Matthew Rocklin—um mantenedor do projeto—mostra o Dask mastigando dados em 64 núcleos distribuídos por 8 máquinas EC2 na AWS.

print/1/experimento-1/cap01.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ____
66
O senso estético de Guido para o design de linguagens é incrível.
77
Conheci muitos projetistas capazes de criar linguagens teoricamente lindas,
88
que ninguém jamais usaria.
9-
Mas Guido é uma daquelas raras pessoas capaz de criar uma linguagem só um pouco menos teoricamente linda que,
9+
Mas Guido é uma daquelas raras pessoas capazes de criar uma linguagem só um pouco menos teoricamente linda que,
1010
por isso mesmo, é uma delícia para programar.
1111
footnote:[Traduzido de
1212
https://fpy.li/1-1[Story of Jython] (EN),
@@ -16,7 +16,7 @@ https://fpy.li/1-2[Jython Essentials]
1616
____
1717

1818
Uma das melhores qualidades de Python é sua consistência.
19-
Após trabalhar com Python por algum tempo é possível intuir, de modo informado e correto,
19+
Após trabalhar com Python por algum tempo, é possível intuir, de modo informado e correto,
2020
o funcionamento de recursos que você acabou de conhecer.
2121

2222
Entretanto, se você aprendeu outra linguagem orientada a objetos antes de Python,
@@ -92,9 +92,9 @@ pois é uma introdução ao Modelo de Dados de Python, que é muito estável.
9292
As mudanças mais significativas foram:
9393

9494
* Métodos especiais que suportam programação assíncrona e outras novas funcionalidades
95-
foram acrescentados às tabelas em <<overview_special_methods>>.
95+
foram acrescentados às tabelas na <<overview_special_methods>>.
9696

97-
* A <<collection_uml>>, mostrando o uso de métodos especiais em <<collection_api>>,
97+
* A <<collection_uml>>, mostrando o uso de métodos especiais na <<collection_api>>,
9898
incluindo a classe base abstrata `collections.abc.Collection`, introduzida no Python 3.6.
9999

100100
Além disso, aqui((("f-string syntax", "benefits of"))) e por toda essa segunda edição,
@@ -340,7 +340,7 @@ Escreve `len(my_object)` e, se `my_object` é uma instância de uma classe defin
340340
então Python chama o método `+__len__+` que você implementou.
341341

342342
Mas o interpretador pega um atalho quando está lidando com um tipo embutido como `list`, `str`, `bytearray`,
343-
ou extensões compiladas como os arrays do NumPy.
343+
ou extensões compiladas como os arrays da NumPy.
344344
As coleções de tamanho variável de Python escritas em C incluem uma
345345
structfootnote:[Uma struct do C é um tipo de registro com campos nomeados.]
346346
chamada `PyVarObject`, com um campo `ob_size` que registra a quantidade de itens na coleção.
@@ -391,7 +391,7 @@ vetores bi-dimensionais—isto é, vetores euclidianos como aqueles usados em ma
391391
======
392392
O tipo embutido `complex` pode ser usado para representar vetores bi-dimensionais,
393393
mas nossa classe pode ser estendida para representar vetores N-dimensionais.
394-
Faremos isso em <<ch_generators>>.
394+
Faremos isso no <<ch_generators>>.
395395
======
396396

397397
[[vectors_fig]]

0 commit comments

Comments
 (0)