You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: vol1/cap08.adoc
+22-11Lines changed: 22 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1417,23 +1417,32 @@ Para encerrar nossa discussão de ABCs em dicas de tipo, precisamos falar sobre
1417
1417
===== A queda da torre numérica
1418
1418
1419
1419
O((("numbers package")))((("numeric tower"))) pacote «`numbers`» [.small]#[fpy.li/4d]# define a assim chamada _torre numérica_ (_numeric tower_) descrita na «_PEP 3141—A Type Hierarchy for Numbers_» [.small]#[fpy.li/pep3141]# .
1420
-
A torre é uma hierarquia linear de ABCs, com `Number` no topo:
1420
+
A torre é uma hierarquia linear de ABCs, com a classe `numbers.Number` no topo:
1421
1421
1422
-
* `Number`
1423
-
* `Complex`
1424
-
* `Real`
1425
-
* `Rational`
1426
-
* `Integral`
1422
+
----
1423
+
Number
1424
+
│
1425
+
└─ Complex
1426
+
│
1427
+
└─ Real
1428
+
│
1429
+
└─ Rational
1430
+
│
1431
+
└─ Integral
1432
+
----
1427
1433
1428
-
Esses ABCs funcionam perfeitamente para checagem de tipo durante a execução, mas eles não são suportados para checagem de tipo estática.
1434
+
Esses ABCs funcionam perfeitamente para checagem de tipo durante a execução,
1435
+
mas não servem para checagem de tipo estática.
1429
1436
A seção «_Numeric Tower_» [.small]#[fpy.li_/cardxvi]# da PEP 484 rejeita as ABCs `numbers` e
1430
1437
manda tratar os tipos nativos `complex`, `float`, e `int` como casos especiais,
1431
1438
como explicado em <<int_complex_tip>>.
1432
-
Voltaremps a essa questão na «Seção 13.6.8» [.small]#[vol.2, fpy.li/5g]#, que é dedicada a comparar protocolos e ABCs
1439
+
Voltaremps a essa questão na «Seção 13.6.8» [.small]#[vol.2, fpy.li/5g]#,
1440
+
que é dedicada a comparar protocolos e ABCs.
1433
1441
1434
-
Na prática, se você quiser anotar argumentos numéricos para checagem estática de tipos, há algumas opções:
1442
+
Na prática, se você quiser anotar argumentos numéricos para checagem estática de tipos,
1443
+
há algumas opções:
1435
1444
1436
-
. Usar um dos tipos concretos (`int`, `float`, ou `complex`) como recomendado pela PEP 488.
1445
+
. Usar um dos tipos concretos (`int`, `float`, ou `complex`) como recomendado pela PEP 484.
1437
1446
. Declarar um tipo union como `Union[float, Decimal, Fraction]`.
1438
1447
. Se você quiser evitar a codificação explícita de tipos concretos, usar protocolos numéricos como `SupportsFloat`, tratados na «Seção 13.6.2» [.small]#[vol.2, fpy.li/5h]#.
1439
1448
@@ -1590,14 +1599,16 @@ então elas não precisam de algo equivalente à pseudo-classe `TypeVar` de Pyth
1590
1599
1591
1600
Outro exemplo é a função `statistics.mode` da biblioteca padrão, que retorna o ponto de dado mais comum de uma série.
1592
1601
1593
-
Aqui é um exemplo de uso da «documentação» [.small]#[fpy.li/4e]#:
1602
+
Eis um exemplo de uso da «documentação» [.small]#[fpy.li/4e]#:
1594
1603
1595
1604
[source, python]
1596
1605
----
1597
1606
>>> mode([1, 1, 2, 3, 3, 3, 3, 4])
1598
1607
3
1599
1608
----
1600
1609
1610
+
<<<
1611
+
1601
1612
Sem o uso de `TypeVar`, `mode` poderia ter uma assinatura como a apresentada no <<mode_float_ex>>.
0 commit comments