变量的引用

 

 1 #  Learner BM
 2 """
 3 1\什么是引用,python中,变量和值的存放地为不同的地方
 4 
 5 值存储在内存中,每个内存有一个内存地址
 6 引用就是内存地址
 7 a=1
 8 内部流程理解为
 9 
10 a是一个数据, 需要通过内存地址  1550829488   才能找到数据1
11 
12 a 对应内存地址  '1550829488'  找到 数值  '1'
13 若定义
14 b =a
15 则变量b会通过 '1550829488' 招待 数值 '1'
16 
17 python中,变量,以及函数的参数,函数返回值 都是通过引用进行传递的,变量的变化不会变更最终数据的值,
18 只是变更的 变量的引用地址,  值当没有引用产生的时候,会被python的解释器进行清理
19 
20 
21 """
22 a = 1
23 print(id(a))
24 
25 """
26 2 什么是可变类型,不可变类型
27     python中 数字,字符串,元祖 属于不可变类型
28             列表,字典属于可变类型,使用方法修改内部数值可以变
29                 (赋值语句会创建新列表字典)
30     什么是可变,不可变,意思就是变量一旦定义后
31     内存中存储的值,是否允许被修改,
32 
33 """
34 # 定义列表
35 list1 = ['Lily', 'Hanmeimei', 'Lucy']
36 # 输出内存地址
37 print('list的内存地址是', id(list1))
38 # 使用方法,修改列表的值
39 list1.append('kate')
40 print('list的内存地址使用append方法后地址是', id(list1))
41 #  内存地址不会发生变化
42 print(list1)
43 
44 # ******使用复制语句,对列表进行操作list1[] =['Marry'] 相当于创建新列表,修改了变量的引用
45 list1 = ['Marry']
46 print('list的内存地址使用赋值后地址是', id(list1))
47 print(list1)
48 
49 """
50 字典的key只能使用不可变类型, 字符串,元祖,数字,(不能使用列表或字典作为KEY)
51 
52 """
53 #  定义一个普通字典
54 dic1 = {(1, 2, 3): 'hello'}
55 
56 
57 """
58 总结,
59 不可变类型 字符串,数字,元祖
60 a=100,     分配内存空间存储100
61 a = 200    重新分配内存空间,存储200  
62         改变变量数据后,需要重新开辟内存空间
63 
64 可变类型 列表,字典
65 
66 list = [1,2,3,4]  开辟内存空间
67 list.append[4]    使用原内存空间,不需要重写开辟内存空间
68                   使用方法改变变量内部数据后,不需要重新开辟内存空间
69 list = []         赋值语句除外, 赋值语句会重新开辟内存空间,
70 但是此种情况不会
71 list[0] = 1       不会开辟内存空间
72 
73 
74 总结,在函数外部,不管可变不可变类型,通过赋值修改变量的数值,都会开辟新的内存空间,
75 但是,列表,字典等可变类型,使用方法修改时候,不会开辟内存空间
76 """
View Code

 

posted on 2020-03-06 16:35  RRRRRRR1  阅读(13)  评论(0)    收藏  举报