68 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Python Mutability and Variable Assignments
 | ||
| localeTitle: Mutabilidad Python y asignaciones de variables
 | ||
| ---
 | ||
| > Cada objeto tiene una identidad, un tipo y un valor. La identidad de un objeto nunca cambia una vez que ha sido creado; usted puede pensar en ello como la dirección del objeto en la memoria. [fuente](https://docs.python.org/3/reference/datamodel.html#data-model)
 | ||
| 
 | ||
| Una vez `object` se crea un `object` , el tipo y la identidad no se pueden cambiar. Si los valores del objeto pueden cambiar o no después de la creación, se determina si el objeto es mutable (puede cambiar) o inmutable (no puede cambiar).
 | ||
| 
 | ||
| Hasta ahora hemos aprendido sobre algunos tipos de objetos y sus subclases: `string` y objetos numéricos (enteros, de punto flotante, complejos y booleanos). Todos estos son objetos **inmutables** .
 | ||
| 
 | ||
| Este concepto puede ser confuso al principio porque lo bueno es un objeto si no puede modificarlo. Lo que hace que estos objetos sean utilizables es la capacidad de asignar y reasignar variables. Las funciones y los operadores pueden devolver nuevos objetos que pueden asignarse a variables.
 | ||
| 
 | ||
| Usando la [función de identificación integrada](https://docs.python.org/3/library/functions.html#id) , que devuelve la identidad de un objeto, podemos ver cómo funciona esto.
 | ||
| 
 | ||
| Aquí hay algunas cosas a tener en cuenta:
 | ||
| 
 | ||
| *   Asignar una variable no significa que la _variable_ sea el _objeto_ . Utilizamos un lenguaje muy específico que indica que las _instrucciones de asignación_ **unen** un **nombre** (identificador) a un _objeto_ . Las variables pueden ser reasignadas:
 | ||
| 
 | ||
| \`pitón
 | ||
| 
 | ||
| > > > a = 1 # Unir a un objeto.  
 | ||
| > > > id (a)  
 | ||
| > > > 140355241530152  
 | ||
| > > > a = 2 # Rebindir a otro objeto.  
 | ||
| > > > id (a)  
 | ||
| > > > 140355241530128  
 | ||
| > > > \`
 | ||
| 
 | ||
| *   Asignar dos variables diferentes a _objetos inmutables_ con el mismo valor puede resultar (no garantizado) en que estén vinculados al mismo _objeto_
 | ||
| 
 | ||
| \`pitón
 | ||
| 
 | ||
| > > > a = 1  
 | ||
| > > > b = 1  
 | ||
| > > > id (a)  
 | ||
| > > > 140355241530152  
 | ||
| > > > id (b) # En este caso a y b están vinculados al mismo objeto.  
 | ||
| > > > 140355241530152  
 | ||
| > > > \`
 | ||
| 
 | ||
| *   Asignar dos variables diferentes a _objetos imutables_ con valores diferentes siempre dará como resultado que estén vinculados a _objetos_ diferentes:
 | ||
| 
 | ||
| \`pitón
 | ||
| 
 | ||
| > > > a = 1  
 | ||
| > > > b = 2  
 | ||
| > > > id (a)  
 | ||
| > > > 140355241530152  
 | ||
| > > > id (b) # a y b están vinculados a diferentes objetos.  
 | ||
| > > > 140355241530128  
 | ||
| > > > \`
 | ||
| 
 | ||
| *   La reasignación de variables no cambia el objeto original, las vincula a un objeto diferente.
 | ||
| 
 | ||
| \`pitón
 | ||
| 
 | ||
| > > > a = 1  
 | ||
| > > > b = 1  
 | ||
| > > > id (a)  
 | ||
| > > > 140355241530152  
 | ||
| > > > id (b)  
 | ||
| > > > 140355241530152  
 | ||
| > > > a = 2  
 | ||
| > > > id (a) # a es rebote a un objeto diferente.  
 | ||
| > > > 140355241530128  
 | ||
| > > > id (b) # b todavía está vinculado al objeto original.  
 | ||
| > > > 140355241530152  
 | ||
| > > > \` |