68 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Python Mutability and Variable Assignments | |||
|  | localeTitle: Python可变性和变量赋值 | |||
|  | --- | |||
|  | > 每个对象都有一个标识,一个类型和一个值。对象的标识一旦创建就永远不会改变;你可以把它想象成对象在内存中的地址。 [资源](https://docs.python.org/3/reference/datamodel.html#data-model)
 | |||
|  | 
 | |||
|  | 创建`object` ,无法更改类型和标识。对象的值是否可以在创建后更改,确定对象是可变的(可以更改)还是不可变的(不能更改)。 | |||
|  | 
 | |||
|  | 到目前为止,我们已经了解了几种类型的对象及其子类: `string` s和数字(整数,浮点,复数和布尔)对象。所有这些都是**不可变**对象。 | |||
|  | 
 | |||
|  | 这个概念最初可能会让人感到困惑,因为如果你不能修改它,对象有什么好处。使这些对象可用的是分配和重新分配变量的能力。函数和运算符可以返回可以分配给变量的新对象。 | |||
|  | 
 | |||
|  | 使用返回对象标识的内置[id函数](https://docs.python.org/3/library/functions.html#id) ,我们可以看到它是如何工作的。 | |||
|  | 
 | |||
|  | 以下是一些要记住的事项: | |||
|  | 
 | |||
|  | *   分配变量并不意味着_变量_是_对象_ 。我们使用了非常具体的语言,指出_赋值语句_ **将** **名称** (标识符) **绑定**到_对象_ 。可以重新分配变量: | |||
|  | 
 | |||
|  | \`蟒蛇 | |||
|  | 
 | |||
|  | > > > a = 1#将a绑定到对象。  
 | |||
|  | > > > ID(一)  
 | |||
|  | > > > 140355241530152  
 | |||
|  | > > > a = 2#将a重新绑定到另一个对象。  
 | |||
|  | > > > ID(一)  
 | |||
|  | > > > 140355241530128  
 | |||
|  | > > > \`
 | |||
|  | 
 | |||
|  | *   将两个不同的变量分配给具有相同值的_不可变对象_可能会导致(不保证)它们绑定到同一个_对象_ | |||
|  | 
 | |||
|  | \`蟒蛇 | |||
|  | 
 | |||
|  | > > > a = 1  
 | |||
|  | > > > b = 1  
 | |||
|  | > > > ID(一)  
 | |||
|  | > > > 140355241530152  
 | |||
|  | > > > id(b)#在这种情况下,a和b绑定到同一个对象。  
 | |||
|  | > > > 140355241530152  
 | |||
|  | > > > \`
 | |||
|  | 
 | |||
|  | *   将两个不同的变量分配给具有不同值的可变_对象_将始终导致它们绑定到不同的_对象_ : | |||
|  | 
 | |||
|  | \`蟒蛇 | |||
|  | 
 | |||
|  | > > > a = 1  
 | |||
|  | > > > b = 2  
 | |||
|  | > > > ID(一)  
 | |||
|  | > > > 140355241530152  
 | |||
|  | > > > id(b)#a和b绑定到不同的对象。  
 | |||
|  | > > > 140355241530128  
 | |||
|  | > > > \`
 | |||
|  | 
 | |||
|  | *   重新分配变量不会更改原始对象,而是将它们绑定到不同的对象。 | |||
|  | 
 | |||
|  | \`蟒蛇 | |||
|  | 
 | |||
|  | > > > a = 1  
 | |||
|  | > > > b = 1  
 | |||
|  | > > > ID(一)  
 | |||
|  | > > > 140355241530152  
 | |||
|  | > > > ID(b)中  
 | |||
|  | > > > 140355241530152  
 | |||
|  | > > > a = 2  
 | |||
|  | > > > id(a)#a被反弹到另一个对象。  
 | |||
|  | > > > 140355241530128  
 | |||
|  | > > > id(b)#b仍然绑定到原始对象。  
 | |||
|  | > > > 140355241530152  
 | |||
|  | > > > \`
 |