Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144400
  • 博文数量: 69
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 595
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-16 00:00
个人简介

宁可逆流而上与众不同,也不顺风顺水随波逐流

文章分类

全部博文(69)

文章存档

2020年(1)

2018年(9)

2017年(43)

2016年(16)

我的朋友

分类: Python/Ruby

2016-12-16 20:58:59

python中的变量不像C语言中先声明后使用,它是使用的时候才被声明。
在C中总是先在内存声明一个空间,然后给予名字即变量,最后再把值存到里面。而python中总是先把这个值在内存中创建起来,然后给予一个名字即标签贴在这块内存上来代表这个变量。
当你把这个变量赋给另一个值(此时这个值已经在内存中创建起来)时,python就会把这个标签(变量名)贴到新变量的内存空间代表这个新变量,此时的旧值如果没有一个标签代表它,那么python就会自动清除掉这个值释放空间。个人觉得这比C好多了,C只能通过作用域来实现自动清除。
区分以下几种情况:
  1. #a 和 b 各自指向两个不同的内存空间
  2. a=2
  3. b=3

  4. #a 和 b 指向同一内存空间
  5. a=2
  6. b=a

  7. #赋予a和b的值一样且小于某个值时可能指向同一内存空间
  8. a=2
  9. b=2

  10. #赋予a和b的值一样且大于某个值时一般各自指向不同内存空间
  11. a=999999999999999
  12. b=999999999999999
最后两种情况是python中的对象缓存机制所致

总结:
     C是先声明后使用,python是使用时创建
     C中赋新值给变量是在原地改变,Python中新值在另一个地方创建并把变量指向它,原来的地址空间中还是原来的值
阅读(840) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~