数据类型
- 可变类型对象:列表(list),字典(dict)
- 不可变类型对象:数字(int,bool,float、、、),字符串(string),元组(tuple)
意义
可变与不可变指的是,在对对象本身进行操作时,引用所指向的地址里的内容是否发生变化。
比如在函数中局部变量本身发生变化,同名的全局变量是否发生变化。
举例
- 可变类型-列表
先看个实例
>>> L = [1,a,"n"]
>>> L
[1, 2, 'n']
>>> id(L)
1858646885064
>>> L += L
>>> L
[1, 2, 'n', 1, 2, 'n']
>>> id(L)
1858646885064
当列表本身发生变化时,id()未发生变化。
- 不可变类型-字符串
>>> str_1 = "asdf"
>>> str_1
'asdf'
>>> id(str_1)
1858646709840
>>> str_1 += str_1
>>> str_1
'asdfasdf'
>>> id(str_1)
1858646817712
当字符串发生变化时,id()也会发生变化
使用注意
在调用函数时,函数内部的局部变量名和全局变量名一致时,要注意可变类型变量的值的变化。
a = [1, 2, 3]
def test(num):
num += num
print(num)
test(a)
print(a)
运行结果:
[1, 2, 3, 1, 2, 3]
[1, 2, 3, 1, 2, 3]
a = [1, 2, 3]
def test(num):
num = num + num
print(num)
test(a)
print(a)
运行结果:
[1, 2, 3, 1, 2, 3]
[1, 2, 3]
这里再说一下“num += num”这个运算,其运算结果和“num = num +num”是一样的,但是“+=”这个操作类似于.append等,是对对象本身的一种操作,而“=”这样的操作,是类似于重新赋值的操作。