python引用
python中的数值类型变量也是引用,
例如:
a = 100
b=a
那么a和b指向同一块内存
但是当修改a或者b的值得时候,Python会新分配一块内存来存储新的值
python中不可变类型(不支持修改)是数值类型,字符串类型,元组类型,其中数值和字符串全部都是引用,修改本质上是再开辟一块空间存放新值
python中可变类型是列表和字典,在字典中,只有不可变类型才能够做key(甚至元组也可以做key)
#-*- coding:utf-8 -*- num = 100 def update(a): a += 10 print(a) #打印110 update(num) print(num) #打印100 ''' 结论:python中所有的变量都是引用类型 num和update(a),实参num和形参a都指向同一片内存地址 a += 10 这里对a做出修改的操作 因为a是数值类型,属于不可变类型,不能修改 所以,python会创建一个临时变量a,用来存储110 所以print(num) 打印的仍然是100
注意:当全局变量做实参时,如果全局变量属于不可变类型,那么函数中对全局变量的修改无效
#-*- coding:utf-8 -*- #python中+=在可变类型运算中的特殊用法 list = [2] def test1(num): num += num print(num) #打印[2,2] test1(list) print(list) #打印[2,2] #从结果而言,修改了可变类型的值 print("===================") list2 = [3] def test2(num): num = num + num #num+num 的结果是[3,3] 这里表示将[3,3]这个列表赋值给num这个临时变量 print(num) #打印[3,3] test2(list2) print(list2) 打印[3] ''' 在python中 +=运算符表示对当前变量进行操作 并不完全等同于 +