今天我们聊一下基本数据类型吧,

在学习c++的时候我们要记住几种数据类型,int,float,double,long,char,double,string,bool,每次使用都要明确定义每个数据类型,这样做是为了在内存里申请指定大小的空间。

但是在Python中就有些不同了,比如我们在使用时直接拿出来不必指定他是什么类型的

如,我们定义一个int类型的x,并赋值等于3,

C++要这么做,int x=3;

而Python则要这么做 x=3,好像在写一条数学公式,

但是这时我们想一个问题,我们在定义这个变量时,C++为x申请了4个字节的空间,Python为x申请了多大的空间呢

我们就从浅浅的分析一下吧。

首先Python语言为动态类型,也就是说对象的类型和内存都是在运行时确定的,另外,Python还采用了Windows内核对象一样的方式对内存进行管理,每一个对象都在维护这一个对指向该对象的引用的计数

这个就好比C++中的指针,定义了指针x,然后为x申请空间并赋值3.14,然后在定义一个指针,指向x,这时x和y用的同一块内存,代码及结果如下:

最后我们在了解一下python内存的垃圾回收,

1、当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉。它会去检查那些引用计数为0的对象,然后清除其在内存的空间。当然除了引用计数为0的会被清除,还有一种情况也会被垃圾收集器清掉:当两个对象相互引用时,他们本身其他的引用已经为0了。

2、垃圾回收机制还有一个循环垃圾回收器, 确保释放循环引用对象(a引用b, b引用a, 导致其引用计数永远不为0)。

参考:

【1】python的内存管理机制

最新文章

  1. PHP获取接口数据(模拟Get)
  2. statsd+graphite
  3. C# 时间比较大小
  4. phpcms 无法显示缩略图 Call to undefined function image_type_to_extension
  5. 在CentOS6.7操作系统上编译安装mysql-5.6.31
  6. 登录DA面板出现:License has expired
  7. swiper有时候不能自动滚动的问题
  8. Best Time to Buy and Sell Stock
  9. Python_使用smtplib和email模块发送邮件
  10. 分享:JS比较两个日期大小
  11. PHP中::、->、self、$this操作符的区别
  12. bzoj3280
  13. jquery.mmenu
  14. 芝麻HTTP:JavaScript加密逻辑分析与Python模拟执行实现数据爬取
  15. Halcon的应用程序 打开后 弹出没有帮助文件错误提示
  16. (原创)不带模板的OLE输出EXCEL
  17. navicate for mysql之-Can't connect to MySQL server on 'localhost'(10038)
  18. 转载skbbuf整理笔记
  19. Go语言环境安装&搭建(Linux)
  20. 使用.NET Core与Google Optimization Tools实现加工车间任务规划

热门文章

  1. 计算机程序的思维逻辑 (66) - 理解synchronized
  2. 【G】开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析
  3. cli/php.ini和fpm/php.ini的区别
  4. HTML学习二
  5. Python简单爬虫记录
  6. 使用Python以优雅的方式实现根据shp数据对栅格影像进行切割
  7. 【转】Netty系列之Netty可靠性分析
  8. 每天一个Linux命令(21)--find命令之xargs
  9. windows container (docker) 容器资料笔记
  10. wemall app中基于Java获取和保存图片的代码