变量的引用

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 """
浙公网安备 33010602011771号