Asignación múltiple, encadenada y aumentada en Python
Cómo funcionan internamente la asignación encadenada, el tuple unpacking, el intercambio sin temporal, los operadores += y el desempaquetado con *.
Cómo funcionan internamente la asignación encadenada, el tuple unpacking, el intercambio sin temporal, los operadores += y el desempaquetado con *.
Una variable en Python es un nombre que referencia un objeto, no un contenedor; entender esta distinción explica la mutabilidad y las referencias compartidas.
Qué objetos son falsy, cómo funciona el protocolo __bool__ y cuándo la distinción entre falsy y None importa en la práctica.
Diferencia entre comparar valores con `==` y comparar identidades con `is`, con el intern pool de CPython y la regla práctica para evitar bugs silenciosos.
and y or devuelven operandos, no bool; cortocircuito y patrones pythónicos para valores por defecto y guardas contra None.
Cómo funcionan ==, !=, <, >, <=, >= en Python 3, por qué el encadenamiento 0 < x < 10 evalúa x una sola vez y qué errores evita.
Los siete operadores aritméticos de Python, con foco en `/` vs `//`, el módulo con negativos, `**` vs `math.pow()` y la precedencia.
Qué es `None`, por qué difiere de `0`, `False` y `””` aunque todos sean falsy, y cómo usarlo correctamente con `is` y como valor sentinel.
En Python, `bool` hereda de `int`; `True` y `False` son `1` y `0`. Esto permite patrones idiomáticos potentes pero también bugs silenciosos si no se tiene en cuenta.
Cómo IEEE 754 explica por qué 0.1 + 0.2 != 0.3, cómo comparar floats correctamente con math.isclose() y cuándo usar Decimal en su lugar.