一、综合
1、当我们传的参数是int、字符串(string)、float、(数值型number)、元组(tuple) 时,无论函数中对其做什么操作,都不会改变函数外这个参数的值;
2、当传的是字典型(dictionary)、列表型(list)时,如果是重新对其进行赋值,则不会改变函数外参数的值,如果是对其进行操作,则会改变。
简单来说 :
- 函数体传入的参数 , 为函数体外变量引用的副本 .
- 在函数体中改变变量指向的堆中的值 , 对函数外变量有效.
- 在函数体中改变变量的引用 , 对函数外变量无效
二、如果想要在函数内部改变外部的变量可以做如下的操作:
1、在函数内部声明为
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
或者直接声明为全局变量 Global