eval('[[0]*2]*2')
Esto crea el resultado de evaluar el código Python [[0]*2]*2
. Multiplicar una lista hace una lista con varias referencias a los objetos originales. La lista resultante es [x, x]
, donde cada x
es una lista que se parece al [0, 0]
. La modificación de una de las sublistas modifica ambos, porque son el mismo objeto.
eval(`[[0]*2]*2`)
Esto crea lo anterior (a través del interior [[0]*2]*2
), a continuación, crea la representación de cadena (debido a los acentos abiertos), que es [[0, 0], [0, 0]]
, crea entonces el resultado de evaluar que, como código Python. Esta vez, las dos sublistas son listas separadas que parecen [0, 0]
, pero son objetos separados. Modificar uno de ellos no tiene ningún efecto en el otro, porque no son el mismo objeto.
Por cierto, el uso de ``
se ha desaconsejado durante muchos años. Usted realmente no puede citar cosas con ``
. Se usa para crear la representación de cadena de algún objeto de Python.
`hi mom`
es un error de sintaxis.
Vale la pena señalar que esta sintaxis backquote se ha eliminado de Python 3. Utilice 'repr()' en su lugar. –
Es importante mencionar que las "comillas invertidas" no son comillas en Python, sino que equivalen a una llamada a "repr", pero lo que está dentro es "código en vivo" que se ejecuta. Sí, esto es extraño, y se ha eliminado en una versión más nueva. Uno debe evitar el uso de comillas inversas. – jsbueno