Skip to content

Commit caa0e13

Browse files
committed
quebras semanticas
1 parent 7540719 commit caa0e13

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

volumes/1/cap01.adoc

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@ Aprendi a dizer "dunder-getitem" com o autor e professor Steve Holden.
8282
"Dunder" é uma contração da frase em inglês "double underscore before and after"
8383
(_sublinhado duplo antes e depois_).
8484
Por isso os métodos especiais são também conhecidos como _métodos dunder_.
85-
O capítulo https://docs.python.org/pt-br/3/reference/lexical_analysis.html#reserved-classes-of-identifiers["Análise Léxica"] de _A Referência da Linguagem Python_ adverte que "_Qualquer_ uso de nomes no formato `+__*__+` que não siga explicitamente o uso documentado, em qualquer contexto, está sujeito a quebra sem aviso prévio."
85+
O capítulo
86+
https://docs.python.org/pt-br/3/reference/lexical_analysis.html#reserved-classes-of-identifiers["Análise Léxica"]
87+
de _A Referência da Linguagem Python_ adverte que "_Qualquer_ uso de nomes no formato `+__*__+`
88+
que não siga explicitamente o uso documentado, em qualquer contexto, está sujeito a quebra sem aviso prévio."
8689
====
8790

8891

@@ -92,9 +95,11 @@ Esse((("Python Data Model", "significant changes to"))) capítulo sofreu poucas
9295
pois é uma introdução ao Modelo de Dados de Python, que é muito estável.
9396
As mudanças mais significativas foram:
9497

95-
* Métodos especiais que suportam programação assíncrona e outras novas funcionalidades foram acrescentados às tabelas em <<overview_special_methods>>.
98+
* Novos métodos especiais que suportam programação assíncrona e
99+
outras novas funcionalidades nas tabelas em <<overview_special_methods>>.
96100

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

99104
Além disso, aqui((("f-string syntax", "benefits of"))) e por toda essa segunda edição,
100105
adotei a sintaxe _f-string_, introduzida n Python 3.6,
@@ -578,7 +583,7 @@ mostrando como elas são criadas a partir de métodos especiais.
578583

579584
[role="width-70"]
580585
[[collection_uml]]
581-
.Diagrama de classes UML com os tipos fundamentais de coleções. Métodos como nome em _itálico_ são abstratos, então precisam ser implementados pelas subclasses concretas, tais como `list` e `dict`. O restante dos métodos tem implementações concretas, então as subclasses podem herdá-los.
586+
.Diagrama de classes UML com os tipos fundamentais de coleções. Métodos como nome em _itálico_ são abstratos,então precisam ser implementados pelas subclasses concretas, tais como `list` e `dict`. O restante dos métodos tem implementações concretas, então as subclasses podem herdá-los.
582587
image::../images/flpy_0102.png[Diagram de classes UML com todas as superclasses e algumas subclasses de `abc.Collection`]
583588

584589
Cada uma das ABCs no topo da hierarquia tem um único método especial.
@@ -660,7 +665,9 @@ I tried to use keep-together in <<special_operators_tbl>> but it was rendering a
660665
Operadores infixos e numéricos são suportados pelos métodos especiais listados na
661666
<<special_operators_tbl>>.
662667
// pass:[<a data-type="xref" href="#special_operators_tbl" data-xrefstyle="select: labelnumber">#special_operators_tbl</a>].
663-
Aqui os nomes mais recentes são `+__matmul__+`, `+__rmatmul__+`, e `+__imatmul__+`, adicionados n Python 3.5 para suportar o uso de `@` como um operador infixo de multiplicação de matrizes, como veremos no _{ch_op_overload}_.((("special methods", "special method names and symbols for operators")))
668+
Aqui os nomes mais recentes são `+__matmul__+`, `+__rmatmul__+`, e `+__imatmul__+`,
669+
adicionados n Python 3.5 para suportar o uso de `@` como um operador infixo de multiplicação de matrizes,
670+
como veremos no _{ch_op_overload}_.((("special methods", "special method names and symbols for operators")))
664671

665672
[[special_operators_tbl]]
666673
.Nomes e símbolos de métodos especiais para operadores
@@ -679,7 +686,8 @@ Aqui os nomes mais recentes são `+__matmul__+`, `+__rmatmul__+`, e `+__imatmul_
679686

680687
[NOTE]
681688
====
682-
Python invoca um método especial de operador reverso no segundo argumento quando o método especial correspondente não pode ser usado no primeiro operando.
689+
Python invoca um método especial de operador reverso no segundo argumento quando
690+
o método especial correspondente não pode ser usado no primeiro operando.
683691
Atribuições aumentadas são atalho combinando um operador infixo com uma atribuição de variável, por exemplo `a += b`.
684692
685693
O _{ch_op_overload}_ explica em detalhes os operadores reversos e a atribuição aumentada.((("", startref="PDMspmtov01")))
@@ -690,23 +698,29 @@ O _{ch_op_overload}_ explica em detalhes os operadores reversos e a atribuição
690698

691699
Em 2013, fiz((("Python Data Model", "making len work with custom objects")))((("&#x005F;&#x005F;len&#x005F;&#x005F;")))
692700
essa pergunta a Raymond Hettinger, um dos desenvolvedores principais do Python,
693-
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."
701+
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_)]
702+
(EN): "a praticidade vence a pureza."
694703
Na <<how_special_used>>, descrevi como `len(x)` roda muito rápido quando `x` é uma instância de um tipo embutido.
695704
Nenhum método é chamado para os objetos embutidos do CPython: o tamanho é simplesmente lido de um campo em uma struct C.
696-
Obter o número de itens em uma coleção é uma operação comum, e precisa funcionar de forma eficiente para tipos tão básicos e diferentes como
705+
Obter o número de itens em uma coleção é uma operação comum,
706+
e precisa funcionar de forma eficiente para tipos tão básicos e diferentes como
697707
`str`, `list`, `memoryview`, e assim por diante.
698708

699-
Em outras palavras, `len` não é chamado como um método porque recebe um tratamento especial como parte do Modelo de Dados de Python, da mesma forma que `abs`.
709+
Em outras palavras, `len` não é chamado como um método porque recebe um tratamento especial como parte do Modelo de Dados de Python,
710+
da mesma forma que `abs`.
700711
Mas graças ao método especial pass:[<code>__len__</code>], também é possível fazer `len` funcionar com nossos objetos personalizados.
701712
Isso é um compromisso justo entre a necessidade de objetos embutidos eficientes e a consistência da linguagem.
702713
Também de "O Zen de Python": "Casos especiais não são especiais o bastante para quebrar as regras."
703714

704715

705716
[NOTE]
706717
====
707-
Pensar em `abs` e `len` como operadores unários nos deixa mais inclinados a perdoar seus aspectos funcionais, contrários à sintaxe de chamada de método que esperaríamos em uma linguagem orientada a objetos.
708-
De fato, a linguagem ABC—uma ancestral direta de Python, que antecipou muitas das funcionalidades desta última—tinha o operador `#`, que era o equivalente de `len` (se escrevia `#s`).
709-
Quando usado como operador infixo, `x#s` contava as ocorrências de `x` em `s`, que em Python obtemos com `s.count(x)`, para qualquer sequência `s`.
718+
Pensar em `abs` e `len` como operadores unários nos deixa mais inclinados a perdoar seus aspectos funcionais,
719+
contrários à sintaxe de chamada de método que esperaríamos em uma linguagem orientada a objetos.
720+
De fato, a linguagem ABC—uma ancestral direta de Python, que antecipou muitas das funcionalidades desta última—tinha o operador `#`,
721+
que era o equivalente de `len` (se escrevia `#s`).
722+
Quando usado como operador infixo, `x#s` contava as ocorrências de `x` em `s`,
723+
que em Python obtemos com `s.count(x)`, para qualquer sequência `s`.
710724
====
711725

712726
[role="pagebreak-before less_space"]

0 commit comments

Comments
 (0)