鱼C论坛

 找回密码
 立即注册
查看: 958|回复: 4

[已解决]变量作为实参传入后,怎么保持不变?

[复制链接]
发表于 2018-4-2 11:03:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. def fun():
  2.     data = ['我在fun()里,我是原始数据,我不想改变']
  3.     print(data)
  4.     data2 = fun2(data)
  5.     return data,data2

  6. def fun2(data):
  7.     data.append('我在fun2(),原始数据被fun2处理了')
  8.     return data  
  9. result1,result2 = fun()
  10. print('data:',result1,'data2:',result2)
复制代码


现在的问题是:我想打印result1,怎么让他是['我在fun()里,我是原始数据,我不想改变']?
最佳答案
2018-4-2 11:09:15
  1. def fun():
  2.     data = ['我在fun()里,我是原始数据,我不想改变']
  3.     re_data = data[:]
  4.     print(data)
  5.     data2 = fun2(data)
  6.     return re_data,data2

  7. def fun2(data):
  8.     data.append('我在fun2(),原始数据被fun2处理了')
  9.     return data  
  10. result1,result2 = fun()
  11. print('data:',result1,'data2:',result2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-2 11:09:15 | 显示全部楼层    本楼为最佳答案   
  1. def fun():
  2.     data = ['我在fun()里,我是原始数据,我不想改变']
  3.     re_data = data[:]
  4.     print(data)
  5.     data2 = fun2(data)
  6.     return re_data,data2

  7. def fun2(data):
  8.     data.append('我在fun2(),原始数据被fun2处理了')
  9.     return data  
  10. result1,result2 = fun()
  11. print('data:',result1,'data2:',result2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-2 11:16:37 | 显示全部楼层
把输出print()修改为这样看着更舒服一些
  1. print('data:',result1,'\n','data2:',result2,sep='')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 11:17:50 | 显示全部楼层
  1. import copy


  2. def fun():
  3.     data = ['我在fun()里,我是原始数据,我不想改变']
  4.     print(data)
  5.     # data2 = fun2(data)  # 传递引用
  6.     data2 = fun2(data.copy())  # 浅拷贝
  7.     # data2 = fun2(copy.deepcopy(data))  # 深拷贝
  8.     return data, data2


  9. def fun2(data):
  10.     data.append('我在fun2(),原始数据被fun2处理了')
  11.     return data


  12. result1, result2 = fun()
  13. print('data:', result1, 'data2:', result2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 11:29:28 | 显示全部楼层
  1. def fun():
  2.     data = ['我在fun()里,我是原始数据,我不想改变']
  3.     print(data)
  4.     data2 = fun2(data)
  5.     return data,data2

  6. def fun2(data):
  7.     data2 = data[:]
  8.     data2.append('我在fun2(),原始数据被fun2处理了')
  9.     return data2  
  10. result1,result2 = fun()
  11. print('data:',result1,'data2:',result2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表