Python中可变类型与不可变类型参数的区别
Python中的数据分为数字型与非数字型:
数字型的有:int bool float complex long(2.x)
非数字型有:string tuple list dict
而这些数据又分为可变类型与不可变类型:
不可变类型:数字型 tuple string
可变类型:list dict
【可变类型指的是来类型的数据可以在内存中进行修改】
例如:
对于不可变类型a,如果要对其进行修改,只会在内存中重新分配一个,再将其的引用赋值给a
而对于可变类型b,如果使用赋值运算符对其修改的话,会同不可变类型a一样,但是用b所自带的append方法对其修改时,只会在原有的内存空间中追加一个1,并不会重新再分配一个
运行结果:
而对于可变类型与不可变类型的参数,有两点需要注意:
1.无论传递的参数是可变类型还是不可变类型,只要在函数内部针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用。即针对参数使用赋值语句,不会影响调用函数时传递的实参变量
运行结果为:
从而证明函数内部的赋值,并没有影响实参的变化
2.若传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,则会影响到外部的实参
运行结果为: