|
17 | 17 | // ____ |
18 | 18 | ++++ |
19 | 19 | <blockquote> |
20 | | -<p>O senso estético de Guido para o design de linguagens é incrível. Conheci muitos projetistas capazes de criar linguagens teoricamente lindas, que ninguém jamais usaria. Mas Guido é uma daquelas raras pessoas capaz criar uma linguagem só um pouco menos teoricamente linda que, por isso mesmo, é uma delícia para programar.</p> |
| 20 | +<p>O senso estético de Guido para o design de linguagens é incrível. Conheci muitos projetistas capazes de criar linguagens teoricamente lindas, que ninguém jamais usaria. Mas Guido é uma daquelas raras pessoas capaz de criar uma linguagem só um pouco menos teoricamente linda que, por isso mesmo, é uma delícia para programar.</p> |
21 | 21 |
|
22 | 22 | <p data-type="attribution">Jim Hugunin, criador do Jython, co-criador do AspectJ, arquiteto do DLR (<em>Dynamic Language Runtime</em>) do .Net. <span data-type="footnote"><a href="https://fpy.li/1-1"><em>"Story of Jython" (_A História do Jython_)</em></a> (EN), escrito como prefácio ao <a class="orm:hideurl" href="https://fpy.li/1-2"><em>Jython Essentials</em></a> (EN), de Samuele Pedroni e Noel Rappin (O'Reilly).</span></p> |
23 | 23 | </blockquote> |
@@ -283,7 +283,7 @@ de uma linha. Você consegue imaginar como ele seria implementado? |
283 | 283 |
|
284 | 284 | A((("Python Data Model", "using special methods", id="PDMspecmeth01")))((("special methods", "calling"))) primeira coisa para se saber sobre os métodos especiais é que eles foram feitos para serem chamados pelo interpretador Python, e não por você. |
285 | 285 | Você não escreve `+my_object.__len__()+`. |
286 | | -Escreve `len(my_object)` e, se `my_object` é uma instância de de uma classe definida pelo usuário, então o Python chama o método `+__len__+` que você implementou. |
| 286 | +Escreve `len(my_object)` e, se `my_object` é uma instância de uma classe definida pelo usuário, então o Python chama o método `+__len__+` que você implementou. |
287 | 287 |
|
288 | 288 | Mas o interpretador pega um atalho quando está lidando com um tipo embutido como `list`, `str`, `bytearray`, ou extensões como os arrays do NumPy. |
289 | 289 | As coleções de tamanho variável do Python escritas em C incluem uma structfootnote:[Uma struct do C é um tipo de registro com campos nomeados.] |
@@ -500,7 +500,7 @@ Apenas `Sequence` é `Reversible`, porque sequências suportam o ordenamento arb |
500 | 500 |
|
501 | 501 | [NOTE] |
502 | 502 | ==== |
503 | | -Desde((("keys", "preserving key insertion order"))) o Python 3.7, o tipo `dict` é oficialmente "ordenado", mas isso só que dizer que a ordem de inserção das chaves é preservada. |
| 503 | +Desde((("keys", "preserving key insertion order"))) o Python 3.7, o tipo `dict` é oficialmente "ordenado", mas isso só quer dizer que a ordem de inserção das chaves é preservada. |
504 | 504 | Você não pode rearranjar as chaves em um `dict` da forma que quiser. |
505 | 505 | ==== |
506 | 506 |
|
@@ -577,7 +577,7 @@ O capítulo <<operator_overloading>> explica em detalhes os operadores reversos |
577 | 577 | ==== |
578 | 578 |
|
579 | 579 |
|
580 | | -=== Porque len não é um método? |
| 580 | +=== Por que len não é um método? |
581 | 581 |
|
582 | 582 | Em 2013, fiz((("Python Data Model", "making len work with custom objects")))((("__len__"))) essa pergunta a Raymond Hettinger, um dos desenvolvedores principais do Python, e o núcleo de sua resposta era uma citação do https://fpy.li/1-8["The Zen of Python" (_O Zen do Python_)] (EN): "a praticidade vence a pureza." |
583 | 583 | Em <<how_special_used>>, descrevi como `len(x)` roda muito rápido quando `x` é uma instância de um tipo embutido. |
|
0 commit comments