python 变量定义,了解一下



#变量的创建
#第一次赋值的时候就创建了

#变量类型
#变量永远不回有任何的和它关联的类型信息或约束
#只是在特定的时间点,简单的引用了一个特定的对象

#变量的使用
#必须在使用前明确的赋值


#变量在赋值的时候才创建


'''
变量到对象的连接称作引用
引用是一种关系
内存中的指针的形式
变量是一个系统表的元素,拥有指向对象的连接的空间
对象是分配的一块内存
引用是自动形成的从变量到对象的指针
'''


'''
动态数据类型

类型属于对象,而不是变量
变量名没有类型
当变量名指向什么对象时,变量的类型就是对象的类型

'''

'''
当一个变量名指向新的对象时
也就是重新赋值
之前占用的空间就会被回收



内部保持一个对象使用情况的计数器
记录当前指向该对象的引用数量
当引用数量为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)  #321
#类似引用类型,传入的只是这个map的地址
test_map ={1:'a'}


def change_map(map):
    map[1] = 'b'
    print(map)
print(test_map)

change_map(test_map)

print(test_map)  #{1: 'b'}

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/80696969