Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions online/cap07.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Ali criamos uma função, a chamamos, lemos seu atributo
`+__doc__+` e verificamos que o próprio objeto função é uma instância da classe `function`.

[[func_object_demo]]
.Cria e testa uma função, e então lê seu `+__doc__+` e verifica seu tipo
.Cria e testa uma função, e então lê seu `+__doc__+` e verifica seu tipo.
====
[source, python]
----
Expand Down Expand Up @@ -108,7 +108,7 @@ com elementos sucessivos do segundo argumento (um iterável), `range(11)` no exe


[[func_object_demo2]]
.Invoca `factorial` através da variável `fact`, e passa `factorial` como argumento para `map`
.Invoca `factorial` através da variável `fact`, e passa `factorial` como argumento para `map`.
====
[source, python]
----
Expand Down Expand Up @@ -140,7 +140,7 @@ o argumento opcional `key` permite fornecer uma função, que será então aplic
Por exemplo, para ordenar uma lista de palavras por tamanho, passe a função `len` como `key`, como no <<higher_order_sort>>.

[[higher_order_sort]]
.Ordenando uma lista de palavras por tamanho
.Ordenando uma lista de palavras por tamanho.
====
[source, python]
----
Expand All @@ -158,7 +158,7 @@ apenas suas versões escritas na ordem inversa são utilizadas como critério de
Por isso as _berries_ aparecem juntas.

[[higher_order_sort_reverse]]
.Ordenando uma lista de palavras pela ordem inversa de escrita
.Ordenando uma lista de palavras pela ordem inversa de escrita.
====
[source, python]
----
Expand Down Expand Up @@ -194,7 +194,7 @@ Considere o <<reduce_x_sum>>.


[[reduce_x_sum]]
.Listas de fatoriais produzidas com `map` e `filter`, comparadas com alternativas escritas com compreensões de lista
.Listas de fatoriais produzidas com `map` e `filter`, comparadas com alternativas escritas com compreensões de lista.
====
[source, python]
----
Expand Down Expand Up @@ -225,7 +225,7 @@ disponível desde o Python 2.3 (lançado em 2003).
A função `sum` é mais legível e mais eficiente:

[[reduce_x_sum2]]
.Soma de inteiros até 99, realizada com `reduce` e `sum`
.Soma de inteiros até 99, realizada com `reduce` e `sum`.
====
[source, python]
----
Expand Down Expand Up @@ -286,7 +286,7 @@ Por exemplo, o <<higher_order_sort_reverse_lambda>> é o exemplo do dicionário
<<higher_order_sort_reverse>> reescrito com `lambda`, sem definir uma função `reverse`.

[[higher_order_sort_reverse_lambda]]
.Ordenando uma lista de palavras escritas na ordem inversa usando `lambda`
.Ordenando uma lista de palavras escritas na ordem inversa usando `lambda`.
====
[source, python]
----
Expand Down Expand Up @@ -388,7 +388,7 @@ Invocar a instância extrai um item.footnote:[Por que criar uma `BingoCage` quan
Invocações de `BingoCage` nunca devolvem um resultado duplicado—desde que a instância tenha sido preenchida com valores únicos.]

[[ex_bingo_callable]]
.bingocall.py: Uma `BingoCage` faz apenas uma coisa: escolhe itens de uma lista embaralhada
.bingocall.py: Uma `BingoCage` faz apenas uma coisa: escolhe itens de uma lista embaralhada.
====
[source, py]
----
Expand Down Expand Up @@ -432,7 +432,7 @@ desempacotar e capturar iteráveis e mapeamentos em argumentos separados na cham
Para ver esses recursos em ação, veja o código do <<tagger_ex>> e os testes mostrando seu uso no <<tagger_demo>>.

[[tagger_ex]]
.`tag` gera elementos HTML; um argumento somente nomeado `class_` é usado para passar atributos "class"; o `_` é necessário porque `class` é uma palavra reservada no Python
.`tag` gera elementos HTML; um argumento somente nomeado `class_` é usado para passar atributos "class"; o `_` é necessário porque `class` é uma palavra reservada no Python.
====
[source, py]
----
Expand All @@ -443,7 +443,7 @@ include::../code/07-1class-func/tagger.py[tags=TAG_FUNC]
A função `tag` pode ser invocada de muitas formas, como demonstra o <<tagger_demo>>.

[[tagger_demo]]
.Algumas das muitas formas de invocar a função `tag` do <<tagger_ex>>
.Algumas das muitas formas de invocar a função `tag` do <<tagger_ex>>.
====
[source, py]
----
Expand Down Expand Up @@ -533,7 +533,7 @@ Você poderia usar ``reduce``—como vimos na <<map_filter_reduce>>—mas isso e
O <<fact_reduce_lambda_ex>> mostra como resolver esse problema usando `lambda`.

[[fact_reduce_lambda_ex]]
.Fatorial implementado com `reduce`e uma função anônima
.Fatorial implementado com `reduce`e uma função anônima.
====
[source, python]
----
Expand All @@ -549,7 +549,7 @@ para você não precisar escrever funções triviais como `lambda a, b: a*b`.
Com ele, podemos reescrever o <<fact_reduce_lambda_ex>> como no <<fact_reduce_operator_ex>>.

[[fact_reduce_operator_ex]]
.Fatorial implementado com `reduce` e `operator.mul`
.Fatorial implementado com `reduce` e `operator.mul`.
====
[source, python]
----
Expand All @@ -570,7 +570,7 @@ Essencialmente, `itemgetter(1)` cria uma função que, dada uma coleção, devol
Isso é mais fácil de escrever e ler que `lambda fields: fields[1]`, que faz a mesma coisa.

[[itemgetter_demo]]
.Demonstração de `itemgetter` para ordenar uma lista de tuplas (mesmos dados do <<ex_nested_tuple>>)
.Demonstração de `itemgetter` para ordenar uma lista de tuplas (mesmos dados do <<ex_nested_tuple>>).
====
[source, python]
----
Expand Down Expand Up @@ -620,7 +620,7 @@ navegará por objetos aninhados para encontrar o atributo.
Esses comportamento são apresentados no <<attrgetter_demo>>. Não é exatamente uma sessão de console curta, pois precisamos criar uma estrutura aninhada para demonstrar o tratamento de atributos com `.` por `attrgetter`.

[[attrgetter_demo]]
.Demonstração de `attrgetter` para processar uma lista previamente definida de `namedtuple` chamada `metro_data` (a mesma lista que aparece no <<itemgetter_demo>>)
.Demonstração de `attrgetter` para processar uma lista previamente definida de `namedtuple` chamada `metro_data` (a mesma lista que aparece no <<itemgetter_demo>>).
====
[source, python]
----
Expand Down Expand Up @@ -683,7 +683,7 @@ Ela é algo similar a `attrgetter` e `itemgetter`, no sentido de criarem uma fun
A função criada invoca por nome um método do objeto passado como argumento, como mostra o <<methodcaller_demo>>.

[[methodcaller_demo]]
.Demonstração de `methodcaller`: o segundo teste mostra a vinculação de argumentos adicionais
.Demonstração de `methodcaller`: o segundo teste mostra a vinculação de argumentos adicionais.
====
[source, python]
----
Expand Down Expand Up @@ -718,7 +718,7 @@ Isso é útil para adaptar uma função que recebe um ou mais argumentos a uma A
O <<ex_partial_mul>> é uma demonstração trivial.

[[ex_partial_mul]]
.Empregando `partial` para usar uma função com dois argumentos onde é necessário um invocável com apenas um argumento
.Empregando `partial` para usar uma função com dois argumentos onde é necessário um invocável com apenas um argumento.
====
[source, python]
----
Expand All @@ -738,7 +738,7 @@ O <<ex_partial_mul>> é uma demonstração trivial.
Um exemplo mais útil envolve a função `unicode.normalize`, que vimos na <<normalizing_unicode>>. Se você trabalha com texto em muitas línguas diferentes, pode querer aplicar `unicode.normalize('NFC', s)` a qualquer string `s`, antes de compará-la ou armazená-la. Se você precisa disso com frequência, é conveninete ter uma função `nfc` para executar essa tarefa, como no <<ex_partial_nfc>>.

[[ex_partial_nfc]]
.Criando uma função conveniente para normalizar Unicode com `partial`
.Criando uma função conveniente para normalizar Unicode com `partial`.
====
[source, python]
----
Expand All @@ -760,7 +760,7 @@ True
O <<partial_demo>> mostra o uso de `partial` com a função `tag` (do <<tagger_ex>>), para fixar um argumento posicional e um argumento nomeado.

[[partial_demo]]
.Demonstração de `partial` aplicada à função `tag`, do <<tagger_ex>>
.Demonstração de `partial` aplicada à função `tag`, do <<tagger_ex>>.
====
[source, python]
----
Expand Down
36 changes: 18 additions & 18 deletions vol1/cap07.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Ali criamos uma função, a chamamos, lemos seu atributo
`+__doc__+` e verificamos que o próprio objeto função é uma instância da classe `function`.

[[func_object_demo]]
.Cria e testa uma função, e então lê seu `+__doc__+` e verifica seu tipo
.Cria e testa uma função, e então lê seu `+__doc__+` e verifica seu tipo.
====
[source, python]
----
Expand Down Expand Up @@ -108,7 +108,7 @@ com elementos sucessivos do segundo argumento (um iterável), `range(11)` no exe


[[func_object_demo2]]
.Invoca `factorial` através da variável `fact`, e passa `factorial` como argumento para `map`
.Invoca `factorial` através da variável `fact`, e passa `factorial` como argumento para `map`.
====
[source, python]
----
Expand Down Expand Up @@ -140,7 +140,7 @@ o argumento opcional `key` permite fornecer uma função, que será então aplic
Por exemplo, para ordenar uma lista de palavras por tamanho, passe a função `len` como `key`, como no <<higher_order_sort>>.

[[higher_order_sort]]
.Ordenando uma lista de palavras por tamanho
.Ordenando uma lista de palavras por tamanho.
====
[source, python]
----
Expand All @@ -158,7 +158,7 @@ apenas suas versões escritas na ordem inversa são utilizadas como critério de
Por isso as _berries_ aparecem juntas.

[[higher_order_sort_reverse]]
.Ordenando uma lista de palavras pela ordem inversa de escrita
.Ordenando uma lista de palavras pela ordem inversa de escrita.
====
[source, python]
----
Expand Down Expand Up @@ -194,7 +194,7 @@ Considere o <<reduce_x_sum>>.


[[reduce_x_sum]]
.Listas de fatoriais produzidas com `map` e `filter`, comparadas com alternativas escritas com compreensões de lista
.Listas de fatoriais produzidas com `map` e `filter`, comparadas com alternativas escritas com compreensões de lista.
====
[source, python]
----
Expand Down Expand Up @@ -225,7 +225,7 @@ disponível desde o Python 2.3 (lançado em 2003).
A função `sum` é mais legível e mais eficiente:

[[reduce_x_sum2]]
.Soma de inteiros até 99, realizada com `reduce` e `sum`
.Soma de inteiros até 99, realizada com `reduce` e `sum`.
====
[source, python]
----
Expand Down Expand Up @@ -286,7 +286,7 @@ Por exemplo, o <<higher_order_sort_reverse_lambda>> é o exemplo do dicionário
<<higher_order_sort_reverse>> reescrito com `lambda`, sem definir uma função `reverse`.

[[higher_order_sort_reverse_lambda]]
.Ordenando uma lista de palavras escritas na ordem inversa usando `lambda`
.Ordenando uma lista de palavras escritas na ordem inversa usando `lambda`.
====
[source, python]
----
Expand Down Expand Up @@ -392,7 +392,7 @@ Invocar a instância extrai um item.footnote:[Por que criar uma `BingoCage` quan
Invocações de `BingoCage` nunca devolvem um resultado duplicado—desde que a instância tenha sido preenchida com valores únicos.]

[[ex_bingo_callable]]
.bingocall.py: Uma `BingoCage` faz apenas uma coisa: escolhe itens de uma lista embaralhada
.bingocall.py: Uma `BingoCage` faz apenas uma coisa: escolhe itens de uma lista embaralhada.
====
[source, py]
----
Expand Down Expand Up @@ -436,7 +436,7 @@ desempacotar e capturar iteráveis e mapeamentos em argumentos separados na cham
Para ver esses recursos em ação, veja o código do <<tagger_ex>> e os testes mostrando seu uso no <<tagger_demo>>.

[[tagger_ex]]
.`tag` gera elementos HTML; um argumento somente nomeado `class_` é usado para passar atributos "class"; o `_` é necessário porque `class` é uma palavra reservada no Python
.`tag` gera elementos HTML; um argumento somente nomeado `class_` é usado para passar atributos "class"; o `_` é necessário porque `class` é uma palavra reservada no Python.
====
[source, py]
----
Expand All @@ -447,7 +447,7 @@ include::../code/07-1class-func/tagger.py[tags=TAG_FUNC]
A função `tag` pode ser invocada de muitas formas, como demonstra o <<tagger_demo>>.

[[tagger_demo]]
.Algumas das muitas formas de invocar a função `tag` do <<tagger_ex>>
.Algumas das muitas formas de invocar a função `tag` do <<tagger_ex>>.
====
[source, py]
----
Expand Down Expand Up @@ -537,7 +537,7 @@ Você poderia usar ``reduce``—como vimos na <<map_filter_reduce>>—mas isso e
O <<fact_reduce_lambda_ex>> mostra como resolver esse problema usando `lambda`.

[[fact_reduce_lambda_ex]]
.Fatorial implementado com `reduce`e uma função anônima
.Fatorial implementado com `reduce`e uma função anônima.
====
[source, python]
----
Expand All @@ -553,7 +553,7 @@ para você não precisar escrever funções triviais como `lambda a, b: a*b`.
Com ele, podemos reescrever o <<fact_reduce_lambda_ex>> como no <<fact_reduce_operator_ex>>.

[[fact_reduce_operator_ex]]
.Fatorial implementado com `reduce` e `operator.mul`
.Fatorial implementado com `reduce` e `operator.mul`.
====
[source, python]
----
Expand All @@ -574,7 +574,7 @@ Essencialmente, `itemgetter(1)` cria uma função que, dada uma coleção, devol
Isso é mais fácil de escrever e ler que `lambda fields: fields[1]`, que faz a mesma coisa.

[[itemgetter_demo]]
.Demonstração de `itemgetter` para ordenar uma lista de tuplas (mesmos dados do <<ex_nested_tuple>>)
.Demonstração de `itemgetter` para ordenar uma lista de tuplas (mesmos dados do <<ex_nested_tuple>>).
====
[source, python]
----
Expand Down Expand Up @@ -624,7 +624,7 @@ navegará por objetos aninhados para encontrar o atributo.
Esses comportamentos são apresentados no <<attrgetter_demo>>. Não é exatamente uma sessão de console curta, pois precisamos criar uma estrutura aninhada para demonstrar o tratamento de atributos com `.` por `attrgetter`.

[[attrgetter_demo]]
.Demonstração de `attrgetter` para processar uma lista previamente definida de `namedtuple` chamada `metro_data` (a mesma lista que aparece no <<itemgetter_demo>>)
.Demonstração de `attrgetter` para processar uma lista previamente definida de `namedtuple` chamada `metro_data` (a mesma lista que aparece no <<itemgetter_demo>>).
====
[source, python]
----
Expand Down Expand Up @@ -687,7 +687,7 @@ Ela é algo similar a `attrgetter` e `itemgetter`, no sentido de criar uma funç
A função criada invoca por nome um método do objeto passado como argumento, como mostra o <<methodcaller_demo>>.

[[methodcaller_demo]]
.Demonstração de `methodcaller`: o segundo teste mostra a vinculação de argumentos adicionais
.Demonstração de `methodcaller`: o segundo teste mostra a vinculação de argumentos adicionais.
====
[source, python]
----
Expand Down Expand Up @@ -722,7 +722,7 @@ Isso é útil para adaptar uma função que recebe um ou mais argumentos a uma A
O <<ex_partial_mul>> é uma demonstração trivial.

[[ex_partial_mul]]
.Empregando `partial` para usar uma função com dois argumentos onde é necessário um invocável com apenas um argumento
.Empregando `partial` para usar uma função com dois argumentos onde é necessário um invocável com apenas um argumento.
====
[source, python]
----
Expand All @@ -742,7 +742,7 @@ O <<ex_partial_mul>> é uma demonstração trivial.
Um exemplo mais útil envolve a função `unicode.normalize`, que vimos na <<normalizing_unicode>>. Se você trabalha com texto em muitas línguas diferentes, pode querer aplicar `unicode.normalize('NFC', s)` a qualquer string `s`, antes de compará-la ou armazená-la. Se você precisa disso com frequência, é conveniente ter uma função `nfc` para executar essa tarefa, como no <<ex_partial_nfc>>.

[[ex_partial_nfc]]
.Criando uma função conveniente para normalizar Unicode com `partial`
.Criando uma função conveniente para normalizar Unicode com `partial`.
====
[source, python]
----
Expand All @@ -764,7 +764,7 @@ True
O <<partial_demo>> mostra o uso de `partial` com a função `tag` (do <<tagger_ex>>), para fixar um argumento posicional e um argumento nomeado.

[[partial_demo]]
.Demonstração de `partial` aplicada à função `tag`, do <<tagger_ex>>
.Demonstração de `partial` aplicada à função `tag`, do <<tagger_ex>>.
====
[source, python]
----
Expand Down