青少年、零基础、初学者Python编程从入门到精通,“老马带小马 一块学Python”编程系列。首先出场的是第一神器,程序“编辑器”。对于初学者,编写的程序都比较简单、代码很短,没有必要用复杂、专业的程序编辑环境,避免喧宾夺主,把时间浪费在配置编辑工具、学习编辑工具上了,而且期间要是出现任何意外麻烦,往往非常耽误时间查找原因、解决问题,甚至可能直接会打击或消磨大家的编程激情,得不偿失。因此,我推荐零基础、初学者直接使用“记事本”来编程,电脑上的“记事本”大家应该都用过,经常用来记一些备忘的事或文字,用专业的术语来说,记事本就是一个文本“编辑器”,我们完全可以直接在记事本上编写程序。
需要注意的是,在记事本上新建并保存程序文件时,文件的扩展名一定要保存成“.py”,而不能是默认的“.txt”,文件的扩展名就好比人的姓氏,代表了这个文件的归属和类别,大家约定俗成把Python程序存储成以“.py”为扩展名的文件,就好比Word应用的文件,扩展名为“.doc”或“.docx”,在需要打开这些文件时,直接双击,就会运行Word应用并打开这些文件。但在这里要特别提醒一下大家,不能用Word来编辑程序文件,用过Word的同学应该都知道,Word是一个高级的文本编辑器或者说是一个富文本编辑器,在Word中我们不仅可以写文字,还可以对我们写的文字设置不同的风格、格式,比如,可以选择不同的字体、设置字体的大小以及是否粗体等等,最后保存成文件时,Word不仅会把我们写的文字内容保存到文件中,还会把文本风格、格式也同时保存到文件中,所以如果我们用Word来编写程序,最后存储的文件就不是纯粹的程序文本了,导致电脑无法识别并执行。
接着,第二神器,Python语言“解释器”闪亮登场。回到我们编写的扩展名为“.py”的Python程序文件,虽然它里面包含的确实是程序,但现在还只是程序源码,光仅仅靠这个文件,电脑是没法直接执行的,为什么呢?因为Python编程语言是众多“高级”编程语言中的一种,当然也是目前最流行的编程语言之一,尤其是最流行的人工智能编程语言,没有之一。正是因为是“高级”语言,也就意味着更接近“人”的思维理解、更有利于我们快速入门上手,但同时也意味着离电脑的直接“理解”和“执行”比较远。
究竟Python高级编程语言离CPU可直接执行的指令有多远呢?可以用大家熟悉的网购来类比一下。
- 我们编写的程序就好像大家网购时拟的采购清单,然后有可能上京东购物,或者淘宝、亚马逊、拼多多等等,这些电商平台就好比我们常用的操作系统,大家可能极大多数都在用微软的Windows操作系统(比如Windows 10,或者Windows 7等),其实现实生活和工作中,还有很多用户使用的是苹果的Mac OS或者是Linux等操作系统,不同的操作系统,为我们的程序运行提供的底层服务是有很大差异的,就像不同的电商平台,提供的价格、打折方式、购物流程及体验,甚至针对的客户群都是不一样的。
- 继续与网购类比,电脑的CPU则好比我们网购产品的最终生产厂家,不同的机器指令则好比不同的产品,电脑机器指令的执行过程就好比产品的生产过程,现实生活中,大家都能很清楚的感知到,不同厂家的产品,即使生产的是同类、同规格的产品,仍然是有差异的,同样,CPU也是由不同厂商制造,比如,大家用得比较多的CPU基本上都是Intel、AMD,他们支持的机器指令也是存在差异的。
- 首先,不同的操作系统,提供的底层服务是很不一样的,比如对存储在硬盘中的文件的读写操作、网络通信相关的接口调用,以及涉及操作系统进程和线程调度相关的服务等,就像京东、淘宝等不同的电商平台提供的下单采购服务、仓储物流服务、售后服务等也是有差异的,那么就需要我们的“解释器”能够灵活处理这些的差异,把我们编写的、通用的Python程序,能正确映射到实际操作系统的服务接口上,确保Python程序中涉及操作系统调用的指令能正确无误地执行。
- 接着,对于CPU的不同、指令体系的不一样,“解释器”必须要能够正确的翻译。就像电商平台上众多产品的不同生产厂家,这些厂家的组织架构不一样、管理方式不一样、生产流程及工艺也不一样,这时候,就需要我们对商品的需求能完整地、正确地转换成对具体生产厂家相应产品的特定生产指令,才能最终达成符合我们要求的商品购买目标。电脑的“解释器”则同样,必须能针对具体CPU的指令体系一丝不差的翻译、映射,不能有任何差错或遗漏。
- 另外,还存在更大的挑战。因为CPU每一条机器指令的执行都是异常复杂的,有的是控制指令、有的是运算指令,而控制指令又涉及到指令译码、控制矩阵、时钟脉冲发生器等,运算指令则包括算术运算、逻辑运算,且每一类里面又有很多细分,这里面任何一个细分指令都可能涉及到CPU中成千上万元器件的完美配合才能完成,正是因为如此,CPU的指令不允许功能复杂、过于高级的指令,否则CPU成本就会急剧上升、硬件设计复杂度更会成指数上升,就像现实生活中,没有哪一个厂家能完全生产一架飞机一样,据说一架波音777飞机上有300万个零部件,由来自全球17个国家的900多家供应商提供。但是,如此一来,并没有解决问题,只是把问题转移了,CPU的指令如果都非常底层的话,我们直接用CPU的指令来进行编程,那就太过于复杂了,随便编写软件一个规模项目,估计都相当于咱们自己组装一架飞机一样困难,显然是低效、不划算的。正是因为如此,各种高级语言,比如Python出现了,采用更加便于理解的、人性化的、高级封装的指令,让我们可以更加高效地、更多地把我们的注意力和精力投放在我们要实现的研发目标上,而不是CPU的机器指令上,往往一条高级指令可能对应几十、上百甚至成千上万条机器指令,相当于最终由“解释器”替我们完成了这些大飞机的封装及拆卸工作。
- 再深入探讨一个细节问题,早期的解释器,就像同声翻译一样,一边读取源码,一边实时翻译解释成机器指令给CPU执行。后来大家发现这种设计效率极低,因为每执行一次,都要对我们的源码重新进行词法及语法分析,相当于前面讲到的,要对“飞机”进行拆卸一遍一样,即,需要把高级语言转换成相应CPU低级机器指令;那么有没有一种可能,我们事先把Python源码转换成一种中间代码,或者说是一种理想中的、通用的、虚拟CPU的指令,相当于一次性把高级语言降维成通用CPU的机器指令,这样的话,对源码的词法分析、语法分析只进行一遍即可,即对“飞机”只用拆卸一遍,后面每次再执行程序时,只用根据具体CPU的指令差异,实时的把通用虚拟CPU的指令映射成具体真实CPU的指令即可,可以极大提高程序执行效率和速度。现在的Python解释器就是这样做的,我们的Python程序在第一遍执行时,就会生成扩展名为“.pyc”的文件,一般我们叫做“字节码”,其实就是我们这里提到的中间代码,后面再次运行时,直接基于“字节码”就可以了。
好了,这一节就讲这么多,主要讲到了“三大神器”,尤其“解释器”的作用,让大家对源码、操作系统、CPU、字节码等,以及他们之间的依存关系有了更清晰的认识。现在咱们使用的各种工具越来越高级,包括咱们使用的Python这种高级语言,版本在不断升级、功能在不断丰富,但问题在于,我们在使用这些高级工具的时候,往往漠视或忽略了底层的支撑体系,导致我们大家与底层之间的鸿沟越来越深,使得我们很多时候,知其然、不知其所以然,只知道如何用,但出了问题的时候,尤其是深层次问题,或者是大型项目面临性能瓶颈需要调优的时候,就干瞪眼、束手无策了,即使对于我们初学者,知道了他们的本质作用,后面在安装、配置及操作上就会更加的清楚明白、心中有数,而不是糊里糊涂了,入门、上手则会更快。
小知识补充:
小马:为什么在Windows文件资源管理器中看不见文件的扩展名,且也没法更改文件的扩展名呢?
老马:需要更改一下文件资源管理器的配置,打开“文件夹选项”,把“隐藏已知文件类型的扩展名”前面的“勾”去掉;或者在工具栏的“查看”页,把“文件扩展名”前的选项框“勾”上。要是还不会的话就自己百度吧,网上有很多更详细的操作步骤说明,这里就不细说了。
小马:用记事本新建的“.py”文件保存关闭后,下一次再编辑时,如何用“记事本”打开呢?
【Python基础|05.三大神器助力Python开发-Python环境搭建(一)】老马:第一种方法,先启动“记事本”,然后进入菜单“文件”,单击“打开”,弹出“打开”窗口,更改窗口右下角的文件类型,选择“所有文件”,这个时候,扩展名为“.py”的文件就在窗口中显示出来了,可以选择打开了;第二种方法,在Windows文件管理器中,选中要打开的py程序文件,在右键菜单中进入“打开方式”,选择“记事本”即可。
原文:三大神器助力Python开发-Python环境搭建(一)
推荐阅读
- 算法|Python中机器学习神器——sklearn模块
- python|基于股票大数据分析的Python入门实战(实践记录)(持续更新)
- python|python 控制手机滑屏_python3+Appium自动化07-滑动操作以及滑动方法封装
- 量子计算|VQLS(变分量子算法解线性方程组)
- python|《机器学习》西瓜书 算法代码 python实现
- python|Pytorch中判断两个tensor是否相等
- 日常小技巧|任意角度旋转图片(python)
- 日常小技巧|已知点坐标,求夹角大小(0-360度)(python)
- Python|用Python去除扫描型PDF中的水印