源 对象 引用后 对象 处理后 引用对象 引用后源对象
ID ID ID ID
test01 2002431216576 [1, 2, 3] 1590914157696 [1, 2, 3] 1590914157696 [1, 2, 3]
test02 2572513741888 [1, 2, 3] 2572513741888 [1, 2, 3] 2572513741888 [1, 2, 3, 2] 2572513741888 [1, 2, 3, 2]
test03 2316473231952 10 2316473231952 10 2316473231952 10
test04 2422428559952 10 2422428559952 10 2316473231952 20 2422428559952 10
  1. # test01验证参数传递后,源与引用源ID及value变化
  2. def test01(b):
  3. a = b
  4. print('a的值是:{}'.format(a))
  5. print('a的类型是:{}'.format(id(a)))
  6. # 可变对象
  7. b =[1, 2, 3]
  8. print(b)
  9. print(id(b))
  10. test01(b)
  11. print(b)
  12. print(id(b))
  1. # 验证处理前后变化
  2. def test02(b):
  3. a = b
  4. print('处理前a的值为{}'.format(a))
  5. print('处理前a的ID为{}'.format(id(a)))
  6. a.append(2)
  7. print('a的值是:{}'.format(a))
  8. print('a的id是:{}'.format(id(a)))
  9. # 可变对象
  10. b =[1, 2, 3]
  11. print(b)
  12. print(id(b))
  13. test02(b)
  14. print(b)
  15. print(id(b))
  • 对join函数的使用有问题。 ```python def test03(b): a = b print(‘a的值是:{}’.format(a)) print(‘a的id是:{}’.format(id(a)))

不可变对象

b =10

print(b) print(id(b)) test03(b) print(b) print(id(b))


10 2316473231952 a的值是:10 a的id是:2316473231952 10 2316473231952

  1. ```python
  2. def test04(b):
  3. a = b
  4. print('a的值是:{}'.format(a))
  5. print('a的id是:{}'.format(id(a)))
  6. a = a+10
  7. print('a的值是:{}'.format(a))
  8. print('a的id是:{}'.format(id(a)))
  9. # 不可变对象
  10. b =10
  11. print(b)
  12. print(id(b))
  13. test04(b)
  14. print(b)
  15. print(id(b))
  16. **********************************
  17. 10
  18. 2422428559952
  19. a的值是:10
  20. a的id是:2422428559952
  21. a的值是:20
  22. a的id是:2422428560272
  23. 10
  24. 2422428559952