a = 1
b = 2
# id(变量)，会返回该变量的引用地址，引用地址和内存地址不一样，python中独有的叫法引用地址
# 引用地址相等，就意味着两个变量指向同一个内存空间
print(id(a), id(b))  # 1556304672 1556304704
b = a
print(id(a), id(b))  # 1556304672 1556304672

print('。。。。。。。')


# 列表中存放的是存数值的地址
a = [10]    # a中存的是列表地址
b = a
b.append(20)
print(id(b[0]))
print(id(b[1]))

c = [10, 20]    # 值传递，会开辟新的内存来保存[10, 20]
print(id(a), id(b), id(c))

print('。。。。。。。')

# python中会对数字和字符串做缓存处理
# 首次记录数据会开辟新空间保存，再次记录时先查询内存中是否已保存过该数据，如果已经保存，则直接使用
a = 10
b = 10
c = 'hello'
d = 'hello'
print(id(a), id(b), id(c), id(d))

'''
    python中有一个内存自动回收机制
'''

# python中将变量列表使用字典来存储 ★
# python不探究底层

