个人推测结论:

可变对象传引用,不可变对象传值

python里的变量不同于c中地址储值模型

a=100
b=100
print(id(a),id(b),a==b,a is b) #8790877986944 8790877986944 True True

这两个变量id相同,值相等,如果 a=a+1,a的id也变了 浮点数也是这样

看成和str tuple一样的不可变对象,实际操作可以改变,但都是副本操作

暂且管它叫不可变对象的副本操作

def f(x):
x+=100
return x
a=100
f(a) #直接传变量 变量传值
print(a) # 100 def fn(data):
for i in range(len(data)):
data[i]+=1
l = [3,5,7]
fn(l) #直接传改变原对象 list传引用
print(l) #[4, 6, 8] #以下是传副本方式 不改变原对象
l2 = [1,2,3]
fn(l2.copy())
print(l2) #[1, 2, 3]
fn(l2[:])
print(l2) #[1, 2, 3] #str 不可变对象是传值
s = "do you like me!"
def str_answer(s):
s=s+" No way!"
print(s)
str_answer(s)
print(s)
print(s.upper()) #return a copy
print(s)

最新文章

  1. vue-cli 组件的使用
  2. android Android-PullToRefresh 下拉刷新
  3. PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别
  4. 【Todo】Java要学的一些比较好的框架和系统
  5. lintcode:Binary Search 二分查找
  6. storm-kafka教程
  7. 怎样调通微信支付及微信发货通知接口(Js API)
  8. 在开发 ExtJS 应用程序常犯的 10 个错误
  9. Docker学习计划
  10. jquery.validata.js 插件
  11. tarjan求强连通分量+缩点+割点以及一些证明
  12. Linux send和recv
  13. MongoDB【快速入门】
  14. java——形参与实参
  15. 小米正式开源 SQL 智能优化与改写工具 SOAR
  16. BZOJ4767: 两双手【组合数学+容斥原理】
  17. 转载:python的编码处理(一)
  18. RN 离线包集成后需要注意的一些问题
  19. MyBatis之MyBatis环境搭建
  20. Python递归实现汉诺塔

热门文章

  1. keepalived + lvs
  2. 配置firewalld防火墙
  3. Quick Union
  4. String.split()与StringUtils.split()
  5. JS设计模式(11)中介者模式
  6. postman+linux+pistache的http通信过程
  7. CSS3 3D酷炫立方体变换动画
  8. FASM学习中的一些表格
  9. 20175312 2018-2019-2 《Java程序设计》第3周学习总结
  10. java servlet练习测试