现在,补充一下昨天函数的话题
传入函数的参数是不可变参数
从本质上来分析一下变量在函数内部和外部的不同,程序运行时:
- 先执行了
x = 1
这一语句,此时我们说x
指向了对象1
,接着打印x的值,即1; - 接着执行函数
change(x)
,程序进入到函数内部,此时,执行语句x=2
,相当于在函数内部再创建了一个x变量,然后把这个x变量指向新的对象2,函数内外这两个变量的地址不同,因此函数内外的两个变量是独立的,函数内变量发生改变不会影响函数外具有相同名字的变量。
传入参数是可变参数
当传入参数是一个列表时,看下面代码打印结果可知,函数内外的 x
的地址一样,即两个变量x均指向同一列表,如下面第二幅图所示,所以,执行完函数内部语句后,函数外的变量也跟着函数内的变量一起变化