一.不在函数里做数值修改时
1.字典做参数
def dowork_data(data): # 处理数据
print(id(data))
return data
if __name__ == '__main__':
data={'a':1}
print(id(data))
if dowork_data(data):
print(data['a'])
运行结果:
2257311927104
2257311927104
1
2.list做参数
def dowork_data(data): # 处理数据
print(id(data))
return data
if __name__ == '__main__':
data=[1,2,3]
print(id(data))
if dowork_data(data):
print(data)
运行结果:
2447542841608
2447542841608
[1, 2, 3]
3.元组做参数
def dowork_data(data): # 处理数据
print(id(data))
return data
if __name__ == '__main__':
data=(1,2,3)
print(id(data))
if dowork_data(data):
print(data)
运行结果:
1466184424616
1466184424616
(1, 2, 3)
4.正常数据变量
def dowork_data(data): # 处理数据
print(id(data))
return data
if __name__ == '__main__':
data=1
print(id(data))
if dowork_data(data):
print(data)
运行结果:
1849327728
1849327728
1
二.在函数里做数值修改时
1.字典做参数
def dowork_data(data): # 处理数据
data['a']=2
print(id(data))
return data
if __name__ == '__main__':
data={'a':1}
print(id(data))
if dowork_data(data):
print(data['a'])
运行结果:
1944694000448
1944694000448
2
2.列表做参数
def dowork_data(data): # 处理数据
data.append(4)
print(id(data))
return data
if __name__ == '__main__':
data=[1,2,3]
print(id(data))
if dowork_data(data):
print(data)
运行结果:
1447158412104
1447158412104
[1, 2, 3, 4]
3.元组做参数
def dowork_data(data): # 处理数据
data=(1,2,3,4)
print(id(data))
return data
if __name__ == '__main__':
data=(1,2,3)
print(id(data))
if dowork_data(data):
print(data)
运行结果:
3067343461544
3067342665592
(1, 2, 3)
4.正常数据变量
def dowork_data(data): # 处理数据
data=data+2
print(id(data))
return data
if __name__ == '__main__':
data=1
print(id(data))
if dowork_data(data):
print(data)
运行结果:
1849327728
1849327792
1
总结:函数对字典和列表操作不会改变引用,而对数值和元组操作会产生新的变量