函数内部变量和参数的关系
函数内部形参重赋值不会影响外部实参
只要针对参数使用赋值语句, 会在函数内部修改局部变量的引用, 不会影响到外部变量的引用
函数内部针对参数的赋值不影响实参在外部的使用, 但在函数内部 同名局部变量会覆盖形参; 我们可以理解为局部变量和全局变量, 传进来的就相当于全局变量, 在函数内对参数重新赋值, 就相当于在函数内部定义一个同名局部变量;
形参重赋值示例
- def test(num, num_list):
- print("现在是函数内部")
- num = 1000
- num_list = [22, 33, 44, 55]
- print(num)
- print(num_list)
- num = 10
- num_list = [1, 2, 3, 4]
- test(num, num_list) # 1000 [22, 33, 44, 55]
- print(num) # 10
- print(num_list) # [1, 2, 3, 4]
函数内部形参修改会影响外部实参
如果传递的参数是可变类型, 在函数内部, 使用方法修改了数据的内容, 同样会影响到外部的数据.
但如果我们针对可变类型参数 只用方法改变参数数据, 不重新赋值, 就会影响到形参在函数外部的使用了;
- def test(num_list):
- print("现在是函数内部")
- num_list.append(9)
- print(num_list)
- num_list = [2, 4, 6]
- print("进入函数前列表:", num_list)
- test(num_list)
- print("现在是函数外部")
- print("从函数出来后列表:", num_list)
- # 进入函数前列表: [2, 4, 6]
- # 现在是函数内部
- # [2, 4, 6, 9]
- # 现在是函数外部
- # 从函数出来后列表: [2, 4, 6, 9]
来源: https://www.2cto.com/kf/201905/806385.html