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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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