Python_函数进阶之不可变和可变参数
1 ''' 函数进阶: 不可变和可变参数 ''' 2 ''' 3 可变类型参数:列表_list, 字典_dict 4 ''' 5 # 问题1:在函数内部,针对参数使用赋值语句,会不会影响调用函数时传递的 实参变量? 6 ''' 7 —— 不会!无论实参是可变类型还是不可变类型, 8 只要针对参数使用 赋值语句,会在函数内部 修改局部变量的引用, 9 不会影响到 外部变量的引用。 10 ''' 11 #例1: 12 13 def demo (num, num_list) : 14 num = 200 15 num_list = [1,2,3] 16 17 print(num) 18 print(num_list) 19 20 # 结论:实参 glnum,glnum_list,经过函数 demo()的赋值语句,其值依然不变! 21 22 ''' 23 问题2:如果传递的参数是 "可变类型",在函数内部,使用"方法"修改了参数的值, 24 同样会影响到外部的数据 25 ''' 26 #例2:列表变量调用 '+='本质上是在执行列表变量的 extend 方法。 27 28 def demo2 (num_list): 29 num_list.extend([1,2,3]) 30 31 print(num_list) 32 33 34 if __name__ == "__main__": 35 glnum = 99 36 glnum_list = [9,8,7] 37 demo(glnum,glnum_list) 38 39 print(glnum) 40 print(glnum_list) 41 print("------例1,结束--------") 42 print("\n") 43 44 demo2(glnum_list) 45 46 print("传递值是:[9,8,7];现值是:", glnum_list) 47 48
#运行结果如下:
'''
>>> 200
[1, 2, 3]
99
[9, 8, 7]
------例1,结束--------
[9, 8, 7, 1, 2, 3]
传递值是:[9,8,7];现值是: [9, 8, 7, 1, 2, 3]
'''