python语言实现了什么?

本文介绍了Python语言中对象的实现原理,包括PyObject数据结构、引用计数、垃圾回收机制,以及PyDirtObject的用途。同时讲述了Python虚拟机的工作方式,并提到了Python学习资源,包括从基础到进阶的完整学习路径和实战案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看了看陈儒的《Python源码剖析》,写的很好,这里简单记录下python语言实现的几个点

1、python对象实现原理

首先说下python中的对象的实现,python中基本所有东西都是对象,而这个对象都是基于PyObject。

[object.h]  
typedef struct _object {  
    int ob_refcnt;//引用计数  
    struct _typeobject *ob_type;  
} PyObject;  

可以看到,这个数据结构十分简单,一个引用计数一个类型指针。

这个引用计数也就是垃圾回收机制的基础,和c++中的智能指针(shared_ptr)一样(智能指针也有4种!!),引用数为0就从堆上删除。

而对象的类型都是由这个ob_type来决定的。

例如创建一个PyIntObject,python内部会用一个PyObject*保存维护这个变量,使用时会去ob_type中找指定函数。例如:

long PyObject_Hash(PyObject *v)
{
      PyTypeObject *tp = v->ob_type;
      if (tp->tp_hash != NULL)
             return (*tp->tp_hash)(v);
      ······     
}   

类型的关键信息都保存在ob_type中。
在这里插入图片描述

2、PyDirtObject

dirt是python中亮相率极高的一个类型,python会为每个类的实例维护一个dict来保存成员变量。

dict和c++中的map,set都是关联容器,不过他们的底层实现不同,c++使用了优化的红黑树,而python则使用了散列表,查找复杂度由O(logN)降到O(1)(最优),但似乎需要的空间更大了,我们知道java中Hashtable 的实例有两个参数影响其性能:初始容量加载因子。python的还没查到—_—!

3、虚拟机

python的虚拟机和java,c#的原理相同,那么这个所谓的虚拟机如何解释呢?下面是java虚拟机的解释

虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

python前端生成的字节码(PyCodeObject)会交给虚拟机来运行,虚拟机上运行的也是一个对象——PyFrameObject,他就是运行时环境,包括一些namespace.

以上就是今天的全部内容分享,觉得有用的话欢迎点赞收藏哦!

Python经验分享

学好 Python 不论是用于就业还是做副业赚钱都不错,而且学好Python还能契合未来发展趋势——人工智能、机器学习、深度学习等。
小编是一名Python开发工程师,自己整理了一套最新的Python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,这份【最新全套Python学习资料】 一定对你有用!

小编为对Python感兴趣的小伙伴准备了以下籽料 !

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑培训的!

  • 学习时间相对较短,学习内容更全面更集中
  • 可以找到适合自己的学习方案

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等学习教程。带你从零基础系统性的学好Python!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)

我已经上传至优快云官方,如果需要可以扫描下方官方二维码免费获取【保证100%免费】

*今天的分享就到这里,喜欢且对你有所帮助的话,记得点赞关注哦~下回见 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值