学了这么久,你知道Python是如何运作的吗?
off999 2024-10-19 07:20 28 浏览 0 评论
全文共2026字,预计学习时长6分钟
作为一名机器学习工程师,我使用Python已经一年多了。
最近出于兴趣,我也开始学习C ++。接触C++后,才意识到Python是多么容易和直观。我对Python与其他语言的不同之处及其工作机制愈加好奇。于是,本文诞生。
本篇文章将尝试讨论Python的内部工作机制。
Python最初是Guido Van Rossum在业余时开发的一个项目,于1991年首次发布。作为一门通用语言,Python为Netflix和Instagram等许多公司提供了强大支持。在一次采访中,Guido将Python与Java/Swift等语言进行了比较,他表示Java/Swift对于日常工作即是编程的软件开发人员是一个不错的选择,而Python针对的目标用户是日常工作与软件开发无关的人,他们编写代码主要是为了处理数据。
在阅读有关Python的文章时,经常会遇到诸如“编译型vs解释型”、“字节码vs机器码”、“动态类型vs静态类型”、“垃圾回收站”等词语。维基百科将Python描述为:
Python是一种解释型的高级通用性编程语言,具有动态类型和垃圾回收功能。
解释型语言
用C / C ++编写程序时,必须进行编译。编译是将人类可理解的代码转换为机器可理解的代码即“机器代码”。机器代码是CPU可直接执行指令的基本形式。成功编译后,代码生成一个可执行文件。执行此文件,代码中的操作将逐步运行。
尽管也需要编译这一步骤,但在大多数情况下,Python是一种解释型语言,而非编译型语言。首先将以.py文件编写的Python代码编译为字节码(后文将详细讨论),然后以.pyc或.pyo格式存储。
Python将源代码转换为字节码,而不像C ++等转换为机器代码。该字节码是可由解释器执行的低级指令集。Python解释器在大多数PC中安装在/usr/local/bin/python3.8路径下。字节码指令在虚拟机而非CPU上执行。
为什么选择解释型语言?
解释型语言具有独立于平台的一大优势。只要Python字节码和虚拟机版本相同,Python字节码就可以在任何平台(Windows,MacOS等)上执行。
Python的另一个优点是动态类型。在C ++等静态类型语言中,必须先声明变量类型,并在编译时检查所有差异(如添加字符串和整数)。但在像Python这样的强类型语言中,检查变量类型和所执行操作的有效性由解释器来完成。
解释型语言的缺点
动态类型提供给代码很大的自由度,但同时提高了代码的风险性,有时会难以调试。
Python经常被指责“速度慢”。这种说法是相对的,也存在很多争议,但之所以“慢”是因为解释器需要做额外工作来将字节码指令转换成可以在机器上执行的指令形式。StackOverflow上的一个帖子对此的解释更易理解:
如果你能用自己的母语和别人交谈,那通常要比口译员把你的语言翻译成其他语言让对方理解要快得多。
垃圾回收究竟是什么?
在早期编程语言中,内存分配主要依靠手动操作。很多时候,当变量不再使用或在程序的其他地方引用时,需要手动从内存中清除。垃圾回收站代替人工进行此项工作,无需任何操作即可自动释放空间。内存管理有两种方式:
简化方式是跟踪某对象的引用次数。当该数字下降到0时,删除该对象。这种方式被称为“引用计数”。在Python中无法禁用此功能。
在对象引用自身或两个对象相互引用的情况下,“生成垃圾回收”线程可以发挥作用。这是传统的引用计数所无法解决的。
什么是__pycache__?
在个人项目中或GitHub上,可能经常看到名为__pycache__的文件夹被自动创建。
/文件夹-_pycache_-preprocess.cpython-36.pyc-preprocess.py
如您所见,自动创建的文件名与文件夹外部的文件名相同,均为_pycache_。.pyc扩展名表示该文件包含preprocess.py的字节码。cpython表示解释器的类型。CPython意味着解释器是用C语言实现的。同样,JPython是用Java实现的Python解释器。
但为什么首先要创建文件夹?
引文这样可以稍微提高Python程序的速度。
而另一种提高速度的方式是更改Python代码,避免将其重新编译为字节码,从而节省时间。
留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请后台留言,遵守转载规范
相关推荐
- cdlinux手机版(cdlinux最新版0.9.8)
-
Kali更好。1.首先,Kali是专门为渗透测试和网络安全而设计的操作系统,它拥有广泛的渗透测试工具和资源,使得用户在这个领域有更多的选择和更强大的功能。2.其次,Kali具有更长的发展历史和更大...
- 电脑cpu处理器排名天梯图(电脑cpu处理器天梯榜)
-
1.荣耀王者段位:A15处理器(5核GPU版)、A15处理器(4核GPU版)不论是从跑分上还是具体体验上,苹果最新的A15处理器都是佼佼者,CPU和GPU大幅领先于安卓现役旗舰SOC2.王者段位:骁龙...
- 电脑怎么重装系统不删除文件
-
一般应用程序的目录你删了只影响程序本身,比如你把某雷的download目录删掉,那只是曾经下载在这个目录下的文件被删了,对电脑应用毫无影响,如果你删除程序的安装目录,那程序就跪了…如果你删除操作系统的...
- 电脑用久了反应慢怎么处理(电脑用久了反应迟钝)
-
方法一:检查电脑配置首先,我们要检查一下自己的电脑配置是否符合安装Windows10系统的要求。如果你的电脑配置本身比较低,比如CPU、内存、硬盘等都不够强劲,那么安装Windows10系统可能会导致...
- 怎么加入已有的局域网(怎么加入已有的局域网连接)
-
你要先知道你公司局域网自己建立的名字,可以从其他的机子上看,比如mshome,workgroup,或者别的什么的。然后,你们有集线器或者路由器吧,插好网线,一边接集线器,一边接电脑网卡。把网卡驱动。...
- 如何在微软官网下载win10系统
-
从微软官网下载win10具体有以下7步:1、输入微软的官网,进入。2、登录自己的账号。3、一直往下拉,可以看到“获取win10”。4、选择要下载的版本。5、选择下载到你自己制定的文件夹,点击...
- 路由器地址怎么改(路由器地址怎么改成别的城市)
-
1、将本机电脑IP地址设置为自动获取。2、打开IE浏览器,在地址栏中输入192.168.1.1或192.168.0.1,在弹出的用户名和密码框中输入默认值,即admin/admin,如果修改过路由器使...
-
- 台式电脑怎么换显卡(台式电脑怎么换显卡视频)
-
1.准备好螺丝刀,拆箱之前我们的手先在周围找金属物品触摸下,释放静电,避免静电击坏电子元件。用螺丝刀拆下螺丝,取下盖子。2.用螺丝刀拆下锁住扩展卡的螺丝和挡片。3.双手各握住一方,用力均衡,然后慢慢地推出电脑显卡。4.之后即可成功取出电脑主...
-
2025-12-26 17:51 off999
- wifi连接上却不能访问互联网
-
原因一:路由器问题,可能路由器过热或者损坏;重启一下路由器试试,或者将路由器恢复一下出厂设置,然后重新拨号上网,并根据设置向导重新设置WiFi,或者更换新路由器再进行拨号连接上网。 原因二:可能宽带...
-
- 显卡驱动在哪里打开(显卡驱动设置在哪里)
-
1.以华硕x16、windows11、amd22.8.1为例。先进入电脑桌面,然后点击电脑开始菜单。2.找到“AMDRadeonsettings”点击展开。3.可以看到“AMDRadeonsettings”的主程序,点击打开。4.这...
-
2025-12-26 16:51 off999
- bios启动项里找不到固态硬盘
-
这个是BIOS设置问题,操作步骤不正确。需要在【启动】菜单中【硬盘BBS属性】中设置。下面提供一下完整的操作步骤,请参考:1、将装有固态硬盘的电脑重启,同时按键盘F2键。2、进入BIOS界面,在标题栏...
-
- 用手机解除路由器限速(用手机解除路由器限速教程)
-
1、设置wifi限速等功能时,需要打开路由器管理页面,所以先打开一个浏览器,在里面输入192.168.1.1,然后点击确定,再把路由器的密码输进去点击确定,原始账密在路由器的背面会有。2、打开wifi路由器的管理页面后,找到设备管理项点击它...
-
2025-12-26 15:51 off999
- 系统集成项目管理工程师报考
-
中级系统集成项目报考条件及费用如下:1、凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术应用能力的人员,均可根据本人情况,报名参加相应专业类别、级别的考试。2、获准在中华人民共和国...
- 电脑显示内存不能为read(电脑显示内存不能为read怎样修改虚拟内存)
-
1内存不能为read可能是因为程序在读取数据时没有分配足够的内存空间。2解决方法可以是增加程序的内存分配,或者优化内存使用方式,例如使用缓存等技术。3此外,还可以通过检查代码逻辑是否有误,或者是...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
