1 # 值传递 : 传递不可变数据类型 number string tuple
2 # 传递的是常量(内存地址)
3 def func1(num1):
4 print(num1)
5 print(id(num1))
6
7 # 值传递
8 func1(123)
9 a = 20
10 print(id(a)) # 1234567
11 func1(a)
12
13
14 # 引用传递:引用传递传递为可变数据类型,传递的内存地址
15 def func(li):
16 print('-----------------------------------')
17 li[0] = 100
18 print(li) # [100, 2, 3]
19 print(id(li))
20
21
22 l1 = [1,2,3]
23 print(id(l1))
24 print(l1) # [1,2,3]
25 func(l1)
26 print(l1) # [100, 2, 3]
27
28
29 print('*************************')
30 # 函数内部变量与函数外部变量
31 def func3(num):
32 # 当函数内部的变量名称与函数形参一致,在函数内部使用时,根据
33 # 变量使用的先后顺序取值,如果在变量声明之前使用,取实参的值,
34 # 如果在变量声明之后使用,取变量的值。
35 print("1---",num) # 200
36 num = 500
37 print('2---',num) # 500
38 # 在函数内部声明的变量不会影响函数外部声明的变量。
39
40 num = 200
41 func3(num)
42 print('3---', num) # 200