#变量的创建
#第一次赋值的时候就创建了
#变量类型
#变量永远不回有任何的和它关联的类型信息或约束
#只是在特定的时间点,简单的引用了一个特定的对象
#变量的使用
#必须在使用前明确的赋值
#变量在赋值的时候才创建
'''
变量到对象的连接称作引用
引用是一种关系
内存中的指针的形式
变量是一个系统表的元素,拥有指向对象的连接的空间
对象是分配的一块内存
引用是自动形成的从变量到对象的指针
'''
'''
动态数据类型
类型属于对象,而不是变量
变量名没有类型
当变量名指向什么对象时,变量的类型就是对象的类型
'''
'''
当一个变量名指向新的对象时
也就是重新赋值
之前占用的空间就会被回收
内部保持一个对象使用情况的计数器
记录当前指向该对象的引用数量
当引用数量为0时
该空间就会被回收
'''
a = 1
b = a
'''
共享引用
两个变量都引用了同一个对象1
'''
a = 2
print(a) # a =2
print(b) # b = 1
c = [1,2,3]
d = c
c[0] = 0
print(c) #[0, 2, 3]
print(d) #[0, 2, 3]
'''
当修改这个引用的对象的时候
没有发生改变,重新指向了新的对象
当对象不是元素类型(引用类型) 就会修改这个对象
我的理解就是 c 和 d 都 指向了 这个列表的 首地址,这块内存地址,当内容改变时,并不知道
有点像c语言指针的感觉
'''
'''
赋值时
缓存复用了小的整数和小的字符串
这个机制和java类似
'''
局部变量、全局变量
val = '123'
a='1'
def change_val(val):
global a
a='321'
print(a)
change_val(val)
print(a)
test_map ={1:'a'}
def change_map(map):
map[1] = 'b'
print(map)
print(test_map)
change_map(test_map)
print(test_map)