引用
- id() 查看变量的标号
- 引用的类型
- 不可变类型(int,long,bool,float,str,tuple)
- 可变类型(列表、字典)
a = 100
id_ = id(a)
print(id_)
a = 200
id_ = id(a)
print(id_)
# 两个是不一样的,引用了不同的内存地址
# 指向的是一个不可变类型,修改后直接指向另一个常量
nums1 = [11,22,33,44]
num2 = num1
id_ = id(nums1)
print(nums1[0])
nums1[0] = 111;
id_ =id(nums1)
# 没有发生变化
# 指向的是一个可变类型,变量再指向一个常量
#!encoding=utf-8
a = 100
b = a
id_1 = id(a)
id_2 = id(b)
print("id_1 = %d"%id_1)
print("id_2 = %d"%id_2)#相同
print('_'*40)
a = 300 # 300不存在,再内存中创建地址
b = 300 # 上面已经存在了,直接引用
id_1 = id(a)
id_2 = id(b)
print("id_1 = %d"%id_1)
print("id_2 = %d"%id_2)#相同
print('_'*40)
a = 100 # 拿回刚创建的100,虽然在赋值300的时候没有引用,但是还没来得及释放,地址id不变
b = 100
id_1 = id(a)
id_2 = id(b)
print("id_1 = %d"%id_1)
print("id_2 = %d"%id_2)#跟1的内存地址一样
def test1(num):
num.append(44)
num = [11,22,33]
test1(num)
print(num)#11,22,33,44
def test2(num):
num += 1 # 100是常量,加1后创建101内存地址
a = 100
test2(2)
print(a)#100
网友评论