聊一聊Python与C++的不同(二)
2024-08-21 01:17:23
今天我们聊一下基本数据类型吧,
在学习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的内存管理机制
最新文章
- PHP获取接口数据(模拟Get)
- statsd+graphite
- C# 时间比较大小
- phpcms 无法显示缩略图 Call to undefined function image_type_to_extension
- 在CentOS6.7操作系统上编译安装mysql-5.6.31
- 登录DA面板出现:License has expired
- swiper有时候不能自动滚动的问题
- Best Time to Buy and Sell Stock
- Python_使用smtplib和email模块发送邮件
- 分享:JS比较两个日期大小
- PHP中::、->;、self、$this操作符的区别
- bzoj3280
- jquery.mmenu
- 芝麻HTTP:JavaScript加密逻辑分析与Python模拟执行实现数据爬取
- Halcon的应用程序 打开后 弹出没有帮助文件错误提示
- (原创)不带模板的OLE输出EXCEL
- navicate for mysql之-Can't connect to MySQL server on 'localhost'(10038)
- 转载skbbuf整理笔记
- Go语言环境安装&;搭建(Linux)
- 使用.NET Core与Google Optimization Tools实现加工车间任务规划
热门文章
- 计算机程序的思维逻辑 (66) - 理解synchronized
- 【G】开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析
- cli/php.ini和fpm/php.ini的区别
- HTML学习二
- Python简单爬虫记录
- 使用Python以优雅的方式实现根据shp数据对栅格影像进行切割
- 【转】Netty系列之Netty可靠性分析
- 每天一个Linux命令(21)--find命令之xargs
- windows container (docker) 容器资料笔记
- wemall app中基于Java获取和保存图片的代码