Articles of inmutabilidad

Mutabilidad del ** argumento de Kwargs en Python

Considere un caso en el que cambio los kwargs los kwargs dentro de un método: def print_arg(**kwargs): print kwargs.pop(‘key’) Si llamo al método pop_arg con un diccionario como este: mydict = {‘key’:’value’} print_arg(**mydict) ¿ mydict será cambiada por esta llamada? También estoy interesado en una explicación más detallada del mecanismo de llamada al método subyacente […]

Comportamiento inesperado de extensión con una lista en Python

Estoy tratando de entender cómo funciona la extensión en Python y no está haciendo lo que esperaba. Por ejemplo: >>> a = [1, 2, 3] >>> b = [4, 5, 6].extend(a) >>> b >>> Pero habría esperado: [4, 5, 6, 1, 2, 3] ¿Por qué está devolviendo un Ninguno en lugar de extender la lista?

¿Por qué los enteros son inmutables en Python?

Entiendo las diferencias entre objetos mutables e inmutables en Python. He leído muchas publicaciones discutiendo las diferencias. Sin embargo, no he leído nada sobre POR QUÉ los enteros son objetos inmutables. ¿Existe una razón para esto? ¿O es la respuesta “así es como es”? Edit: Me están pidiendo que “diferencie” esta pregunta de otras preguntas, […]

Matriz numpy inmutable?

¿Hay una forma sencilla de crear una matriz NumPy inmutable? Si uno tiene que derivar una clase de ndarray para hacer esto, ¿cuál es el conjunto mínimo de métodos que debe anular para lograr la inmutabilidad?

Python, subclasificando tipos inmutables.

Tengo la siguiente clase: class MySet(set): def __init__(self, arg=None): if isinstance(arg, basestring): arg = arg.split() set.__init__(self, arg) Esto funciona como se esperaba (inicializando el conjunto con las palabras de la cadena en lugar de las letras). Sin embargo, cuando quiero hacer lo mismo con la versión inmutable de set, el método __init__ parece ser ignorado: […]

¿Cómo / por qué funciona set () en {frozenset ()}?

A pesar de que los conjuntos son inestables, la verificación de membresía en otros trabajos de conjuntos: >>> set() in {frozenset()} True Esperaba TypeError: unhashable type: ‘set’ , consistente con otros comportamientos en Python: >>> set() in {} # doesn’t work when checking in dict TypeError: unhashable type: ‘set’ >>> {} in {frozenset()} # looking […]

Cuerda de python con espacio y sin espacio al final e inmutabilidad.

Aprendí que en algunas clases inmutables, __new__ puede devolver una instancia existente: esto es lo que a veces hacen los tipos int , str y tuple para valores pequeños. Pero, ¿por qué los siguientes dos fragmentos difieren en el comportamiento? Con un espacio al final: >>> a = ‘string ‘ >>> b = ‘string ‘ […]

un tipo mutable dentro de un contenedor inmutable

Estoy un poco confundido sobre la modificación de los miembros de la tupla. Lo siguiente no funciona: >>> thing = ([‘a’],) >>> thing[0] = [‘b’] TypeError: ‘tuple’ object does not support item assignment >>> thing ([‘a’],) Pero esto funciona: >>> thing[0][0] = ‘b’ >>> thing ([‘b’],) También funciona: >>> thing[0].append(‘c’) >>> thing ([‘b’, ‘c’],) No […]

Hashable, inmutable

De una pregunta SO reciente (ver Crear un diccionario en python que está indexado por listas ) me di cuenta de que probablemente tenía una concepción errónea del significado de objetos hashable e inmutables en python. ¿Qué significa hashable en la práctica? ¿Cuál es la relación entre hashable e inmutable? ¿Hay objetos mutables que son […]

¿Qué sería un “dict congelado”?

Un conjunto congelado es un frozenset. Una lista congelada podría ser una tupla. ¿Qué sería un dictado congelado? Un dictado inmutable, hashable. Supongo que podría ser algo así como collections.namedtuple . Se llamaron dos veces, pero eso es más como un dict de teclas congeladas (un dict medio congelado). ¿No es así? Un “frozendict” debe […]