PYTHON
列表list
地址
list经过截取操作list=list[1:]后是一个新的地址
lsit的append()不改变地址
list传入函数,函数中的list是传入前的地址,函数传出的也是地址
def a(l:list):
print('l传入函数a后的地址',id(l))
print(l)
l.append(6) # 不改变地址
print('l增加元素后的地址a',id(l))
print(l)
return l
def b(l:list):
print('l传入函数后的地址',id(l))
print(l)
l=l[1:] # 改变地址
print('l截取',id(l))
print(l)
return l
l=[1,2,3,4,4,4,4]
print('l的初始地址',id(l))
print(l)
l.append(5) # 不改变地址
print('l增加元素后的地址',id(l))
print(l)
l=l[1:] # 改变地址
print('l截取',id(l))
print(l)
a(l) # 传入不改变地址 不接收传出不改变传出的l地址
print('函数a不接收处理后的l的地址',id(l))
print(l)
l=a(l) # 传入不改变地址 接收传出不改变传出的l的地址
print('函数a接收处理后的l的地址',id(l))
print(l)
b(l) # 传入不改变地址 不接收传出不改变传出的l地址
print('函数b不接收处理后的l的地址',id(l))
print(l)
l=b(l) # 传入不改变地址 接收传出不改变传出的l的地址
print('函数b接收处理后的l的地址',id(l))
print(l)
l的初始地址 1975418364160
[1, 2, 3, 4, 4, 4, 4]
l增加元素后的地址 1975418364160
[1, 2, 3, 4, 4, 4, 4, 5]
l截取 1975419633024
[2, 3, 4, 4, 4, 4, 5]
l传入函数a后的地址 1975419633024
[2, 3, 4, 4, 4, 4, 5]
l增加元素后的地址a 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6]
函数a不接收处理后的l的地址 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6]
l传入函数a后的地址 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6]
l增加元素后的地址a 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6, 6]
函数a接收处理后的l的地址 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6, 6]
l传入函数后的地址 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6, 6]
l截取 1975418364160
[3, 4, 4, 4, 4, 5, 6, 6]
函数b不接收处理后的l的地址 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6, 6]
l传入函数后的地址 1975419633024
[2, 3, 4, 4, 4, 4, 5, 6, 6]
l截取 1975418364160
[3, 4, 4, 4, 4, 5, 6, 6]
函数b接收处理后的l的地址 1975418364160
[3, 4, 4, 4, 4, 5, 6, 6]