Mutabilidad e inmutabilidad en Python
Qué significa que un objeto sea mutable o inmutable, cómo afecta a las referencias compartidas y por qué la inmutabilidad es requisito para ser clave de diccionario.
Qué significa que un objeto sea mutable o inmutable, cómo afecta a las referencias compartidas y por qué la inmutabilidad es requisito para ser clave de diccionario.
Desempaquetado de iterables en asignaciones, bucles y llamadas a funciones, incluyendo * extendido y anidado.
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.