Python中的"copy"与"reference"


               
               
                '''
Python中的“copy”与“reference”
每个对象对应一个实体,一个实体可以对应多个别名,python没有像C++语言的参数和引用的之分,python统一使用别名(aliase)。
对于简单(或者称为基本)和不可修改类型,python使用“copy”别名的方式;对于复合和可修改类型,python使用“reference”别名
1.使用“copy”别名,必须使用基本类型(int,float,string,tuple)
'''
# 整型数值
x = 10
y = x
print x,y
# 10,10
y = 40
print x,y
# 10,40
# x的值还为10,y的值变为40
'''
y = x是对象复制,x与y分别使用不同的对象实体,故y只改变后,x值还为10
'''
'''
2.使用“reference”别名,类型为自定义一个Point
'''
#定义一个Point
class Point:
    pass;
        
a = Point()
a.x = 10
# 给对象Point再加一个别名
b = a
# 打印原始数据
print a.x,b.x
# 使用别名b访问Point对象
b.x = 40
# 打印修改后的Point对象
print a.x,b.x
'''
b = a为Point对象实体添加另外的一个别名,当再次调用b.x = 40时,b指向的实体改变,其x属性重新赋值为40.因x与y指向同一个实体,
故a的属性x也改为40
'''