You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Prefacio.adoc
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,7 +76,7 @@ pela comunidade Python brasileira.
76
76
77
77
=== Como ler este livro
78
78
79
-
Recomendo((("Python", "approach to learning", id="Papproach00"))) que todos leiam o <<data_model>>.
79
+
Recomendo((("Python", "approach to learning", id="Papproach00"))) que todos leiam o <<ch_data_model>>.
80
80
Após a leitura do capítulo "O modelo de dados de Python",
81
81
o público principal deste livro não terá problema em
82
82
pular diretamente para qualquer outra parte,
@@ -85,7 +85,7 @@ Pense nas partes <<data_structures_part>> até a <<metaprog_part>> como cinco li
85
85
86
86
Tentei enfatizar o uso de classes e módulos que já existem antes de discutir como criar seus próprios.
87
87
Por exemplo, na <<data_structures_part>>,
88
-
o <<sequences>> trata dos tipos de sequências que estão prontas para serem usadas,
88
+
o <<ch_sequences>> trata dos tipos de sequências que estão prontas para serem usadas,
89
89
incluindo algumas que não recebem muita atenção, como `collections.deque`.
90
90
Criar sequências definidas pelo usuário só é discutido na <<classes_protocols_part>>, onde também vemos como usar as classes base abstratas (ABCs) de `collections.abc`.
91
91
Criar suas próprias ABCs é discutido ainda mais tarde, na <<classes_protocols_part>>, pois acredito na importância de estar confortável usando uma ABC antes de escrever uma.
@@ -104,18 +104,18 @@ Acredito que isso é mais fácil de tolerar agora que você sabe porque escolhi
104
104
Aqui estão os principais tópicos de cada parte do livro:
105
105
106
106
<<data_structures_part>>::
107
-
O <<data_model>> introduz o Modelo de Dados de Python e explica porque os métodos especiais (por exemplo, `+__repr__+`) são a chave do comportamento consistente de objetos de todos os tipos. Os métodos especiais são tratados em maiores detalhes ao longo do livro. Os((("data structures"))) capítulos restantes dessa parte cobrem o uso de tipos coleção: sequências, mapeamentos e conjuntos, bem como a separação de `str` e `bytes`--causa de muitas celebrações entre usuários de Python 3, e de muita dor para usuários de Python 2 obrigados a migrar suas bases de código. Também são abordadas as fábricas de classe de alto nível na biblioteca padrão: fábricas de tuplas nomeadas e o decorador `@dataclass`. _Pattern matching_ ("casamento de padrões")—novidade no Python 3.10—é tratada em seções do <<sequences>>,
108
-
do <<dicts-a-to-z>> e
109
-
do <<data_class_ch>>,
107
+
O <<ch_data_model>> introduz o Modelo de Dados de Python e explica porque os métodos especiais (por exemplo, `+__repr__+`) são a chave do comportamento consistente de objetos de todos os tipos. Os métodos especiais são tratados em maiores detalhes ao longo do livro. Os((("data structures"))) capítulos restantes dessa parte cobrem o uso de tipos coleção: sequências, mapeamentos e conjuntos, bem como a separação de `str` e `bytes`--causa de muitas celebrações entre usuários de Python 3, e de muita dor para usuários de Python 2 obrigados a migrar suas bases de código. Também são abordadas as fábricas de classe de alto nível na biblioteca padrão: fábricas de tuplas nomeadas e o decorador `@dataclass`. _Pattern matching_ ("casamento de padrões")—novidade no Python 3.10—é tratada em seções do <<ch_sequences>>,
108
+
do <<ch_dicts_sets>> e
109
+
do <<ch_dataclass>>,
110
110
que discutem padrões para sequências, padrões para mapeamentos e padrões para instâncias de classes.
111
111
O último capítulo na <<data_structures_part>> versa sobre o ciclo de vida dos objetos: referências, mutabilidade e coleta de lixo (_garbage collection_).
112
112
113
-
<<function_objects_part>>:: Aqui((("functions, as first-class objects", "topics covered"))) falamos sobre funções como objetos de primeira classe na linguagem: o significado disso, como isso afeta alguns padrões de projetos populares e como aproveitar as clausuras para implementar decoradores de função. Também são vistos aqui o conceito geral de invocáveis no Python, atributos de função, introspecção, anotação de parâmetros e a nova declaração `nonlocal` no Python 3. O <<type_hints_in_def_ch>> introduz um novo tópico importante, dicas de tipo em assinaturas de função.
113
+
<<function_objects_part>>:: Aqui((("functions, as first-class objects", "topics covered"))) falamos sobre funções como objetos de primeira classe na linguagem: o significado disso, como isso afeta alguns padrões de projetos populares e como aproveitar as clausuras para implementar decoradores de função. Também são vistos aqui o conceito geral de invocáveis no Python, atributos de função, introspecção, anotação de parâmetros e a nova declaração `nonlocal` no Python 3. O <<ch_type_hints_def>> introduz um novo tópico importante, dicas de tipo em assinaturas de função.
114
114
115
-
<<classes_protocols_part>>:: Agora((("classes", "topics covered"))) o foco se volta para a criação "manual" de classes—em contraste com o uso de fábricas de classe vistas no <<data_class_ch>>.
116
-
Como qualquer linguagem orientada a objetos, Python tem seu conjunto particular de recursos que podem ou não estar presentes na linguagem na qual você ou eu aprendemos programação baseada em classes. Os capítulos explicam como criar suas próprias coleções, classes base abstratas (ABCs) e protocolos, bem como as formas de lidar com herança múltipla e como implementar a sobrecarga de operadores, quando fizer sentido.O <<more_types_ch>> continua a conversa sobre dicas de tipo.
115
+
<<classes_protocols_part>>:: Agora((("classes", "topics covered"))) o foco se volta para a criação "manual" de classes—em contraste com o uso de fábricas de classe vistas no <<ch_dataclass>>.
116
+
Como qualquer linguagem orientada a objetos, Python tem seu conjunto particular de recursos que podem ou não estar presentes na linguagem na qual você ou eu aprendemos programação baseada em classes. Os capítulos explicam como criar suas próprias coleções, classes base abstratas (ABCs) e protocolos, bem como as formas de lidar com herança múltipla e como implementar a sobrecarga de operadores, quando fizer sentido.O <<ch_more_types>> continua a conversa sobre dicas de tipo.
117
117
118
-
<<control_flow_part>>:: Nesta((("control flow"))) parte são tratados os mecanismos da linguagem e as bibliotecas que vão além do controle de fluxo tradicional, com condicionais, laços e sub-rotinas. Começamos com os geradores, visitamos a seguir os gerenciadores de contexto e as corrotinas, incluindo a desafiadora mas poderosa sintaxe do `yield from`. O <<with_match_ch>> inclui um exemplo significativo, usando _pattern matching_ em um interpretador de linguagem simples mas funcional. O <<concurrency_models_ch>> é novo, apresentando uma visão geral das alternativas para processamento concorrente e paralelo no Python, suas limitações, e como a arquitetura de software permite ao Python operar na escala da Web. Reescrevi o capítulo sobre _programação assíncrona_, para enfatizar os recursos centrais da linguagem—por exemplo, `await`, `async def`, `async for` e `async with`, e mostrar como eles são usados com _asyncio_ e outros frameworks.
118
+
<<control_flow_part>>:: Nesta((("control flow"))) parte são tratados os mecanismos da linguagem e as bibliotecas que vão além do controle de fluxo tradicional, com condicionais, laços e sub-rotinas. Começamos com os geradores, visitamos a seguir os gerenciadores de contexto e as corrotinas, incluindo a desafiadora mas poderosa sintaxe do `yield from`. O <<ch_with_match>> inclui um exemplo significativo, usando _pattern matching_ em um interpretador de linguagem simples mas funcional. O <<ch_concurrency_models>> é novo, apresentando uma visão geral das alternativas para processamento concorrente e paralelo no Python, suas limitações, e como a arquitetura de software permite ao Python operar na escala da Web. Reescrevi o capítulo sobre _programação assíncrona_, para enfatizar os recursos centrais da linguagem—por exemplo, `await`, `async def`, `async for` e `async with`, e mostrar como eles são usados com _asyncio_ e outros frameworks.
119
119
120
120
<<metaprog_part>>:: Essa((("metaprogramming"))) parte começa com uma revisão de técnicas para criação de classes com atributos criados dinamicamente para lidar com dados semi-estruturados, tal como conjuntos de dados JSON. A seguir tratamos do mecanismo familiar das propriedades, antes de mergulhar no funcionamento do acesso a atributos de objetos no Python em um nível mais baixo, usando descritores. A relação entre funções, métodos e descritores é explicada. Por toda a <<metaprog_part>>, a implementação passo a passo de uma biblioteca de validação de campos revela questões sutis, levando às ferramentas avançadas do capítulo final: decoradores de classes e metaclasses.
121
121
@@ -291,7 +291,7 @@ Alex Martelli e Anna Ravenscroft foram os primeiros a verem o esquema desse livr
291
291
Seus livros me ensinaram Python idiomático e são modelos de clareza, precisão e profundidade em escrita técnica.
292
292
Os https://fpy.li/p-7[6,200+ posts de Alex no Stack Overflow] (EN) são uma fonte de boas ideias sobre a linguagem e seu uso apropriado.
293
293
294
-
Martelli e Ravenscroft foram também revisores técnicos deste livro, juntamente com Lennart Regebro e Leonardo Rochael. Todos nesta proeminente equipe de revisão técnica têm pelo menos 15 anos de experiência com Python, com muitas contribuições a projetos Python de alto impacto, em contato constante com outros desenvolvedores da comunidade. Em conjunto, eles me enviaram centenas de correções, sugestões, questões e opiniões, acrescentando imenso valor ao livro. Victor Stinner gentilmente revisou o <<async_ch>>, trazendo seu conhecimento especializado, como um dos mantenedores do `asyncio`, para a equipe de revisão técnica. Foi um grande privilégio e um prazer colaborar com eles por estes muitos meses.
294
+
Martelli e Ravenscroft foram também revisores técnicos deste livro, juntamente com Lennart Regebro e Leonardo Rochael. Todos nesta proeminente equipe de revisão técnica têm pelo menos 15 anos de experiência com Python, com muitas contribuições a projetos Python de alto impacto, em contato constante com outros desenvolvedores da comunidade. Em conjunto, eles me enviaram centenas de correções, sugestões, questões e opiniões, acrescentando imenso valor ao livro. Victor Stinner gentilmente revisou o <<ch_async>>, trazendo seu conhecimento especializado, como um dos mantenedores do `asyncio`, para a equipe de revisão técnica. Foi um grande privilégio e um prazer colaborar com eles por estes muitos meses.
295
295
296
296
A editora Meghan Blanchette foi uma fantástica mentora, e me ajudou a melhorar a organização e o fluxo do texto do livro, me mostrando que partes estavam monótonas e evitando que eu atrasasse o projeto ainda mais. Brian MacDonald editou os capítulo na <<function_objects_part>> quando Meghan estava ausente. Adorei trabalhar com eles e com todos na O'Reilly, incluindo a equipe de suporte e desenvolvimento do Atlas (Atlas é a plataforma de publicação de livros da O'Reilly, que eu tive a felicidade de usar para escrever esse livro).
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 <<operator_overloading>>.((("special methods", "special method names and symbols for operators")))
661
+
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")))
662
662
663
663
[[special_operators_tbl]]
664
664
.Nomes e símbolos de métodos especiais para operadores
@@ -680,7 +680,7 @@ Aqui os nomes mais recentes são `+__matmul__+`, `+__rmatmul__+`, e `+__imatmul_
680
680
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.
681
681
Atribuições aumentadas são atalho combinando um operador infixo com uma atribuição de variável, por exemplo `a += b`.
682
682
683
-
O <<operator_overloading>> explica em detalhes os operadores reversos e a atribuição aumentada.((("", startref="PDMspmtov01")))
683
+
O <<ch_op_overload>> explica em detalhes os operadores reversos e a atribuição aumentada.((("", startref="PDMspmtov01")))
684
684
====
685
685
686
686
@@ -713,13 +713,13 @@ Uma exigência básica para um objeto em Python é fornecer strings representand
713
713
714
714
Emular sequências, como mostrado com o exemplo do `FrenchDeck`, é um dos usos mais comuns dos métodos especiais.
715
715
Por exemplo, bibliotecas de banco de dados frequentemente devolvem resultados de consultas na forma de coleções similares a sequências.
716
-
Tirar o máximo proveito dos tipos de sequências existentes é o assunto do <<sequences>>.
717
-
Como implementar suas próprias sequências será visto na <<user_defined_sequences>>,
716
+
Tirar o máximo proveito dos tipos de sequências existentes é o assunto do <<ch_sequences>>.
717
+
Como implementar suas próprias sequências será visto na <<ch_seq_methods>>,
718
718
onde criaremos uma extensão multidimensional da classe `Vector`.
719
719
720
720
Graças à sobrecarga de operadores, Python oferece uma rica seleção de tipos numéricos, desde os tipos embutidos até `decimal.Decimal` e `fractions.Fraction`,
721
721
todos eles suportando operadores aritméticos infixos.
722
-
As bibliotecas de ciência de dados _NumPy_ suportam operadores infixos com matrizes e tensores. A implementação de operadores—incluindo operadores reversos e atribuição aumentada—será vista no <<operator_overloading>>, usando melhorias do exemplo `Vector`.
722
+
As bibliotecas de ciência de dados _NumPy_ suportam operadores infixos com matrizes e tensores. A implementação de operadores—incluindo operadores reversos e atribuição aumentada—será vista no <<ch_op_overload>>, usando melhorias do exemplo `Vector`.
723
723
724
724
Também veremos o uso e a implementação da maioria dos outros métodos especiais do Modelo de Dados de Python ao longo deste livro.
0 commit comments