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]



'''



posted @ 2019-05-10 13:20  Handsome_dj  阅读(536)  评论(0编辑  收藏  举报