《Python学习手册 第五版》 -第2章 Python如何运行程序
第二章主要讲解了Python的运行机制,
在开始之前,需要明确以下几点
因为《Python学习手册》这本书是面向市场很多人的,既然有很多人,就有很多不一样的需求和使用情况,这本书涵盖Python2.X和Python3.X两个版本的讲解,也涉及到Linux、Mac OS系统、Windows系统等不同的操作系统,本人学习不是为了大而全,而是单点突破,深入了解,所以后续的所有笔记内容会依以下情况进行,不再单独说明
1、使用Window 10操作系统
2、Python环境使用Python 3.7.2版本(如下截图):
因为《Python学习手册》第五版的英文版是2013年出版,当时最新的Python版本是3.3.0,截止到现在2019年12月,Python最新版本3.8.0

3、运行Python的方式:DOS命令、Eclipse集成环境
接下来回归本章的重点,Python的运行机制:文章中有一个图,有书的可以参考,以下是我理解后的步骤,通过文字即可了解
步骤1、源代码文件:就是我们写出来的程序文件,以“.py"格式存储
步骤2、编译:Python会对源代码进行编译
步骤3、编译后的结果是字节码文件:字节码文件会以”.pyc"的格式存在
步骤4、Python虚拟机(PVM)运行字节码
以上4各步骤就是Python核心的运行机制,通过这四个步骤,会有很多延伸出来的问题
1、平时写Python程序,然后直接运行即可,没有感觉有这么多步骤啊?
答:步骤1是我们要做的,所以是能很明显感受到的,步骤2~4,是Python程序后台自动完成的,不需要人为干预,所以对程序员来说是隐藏的,步骤2~4合在一起,有时候也会称为“Python解释器”,如果听到这个词,就是指的步骤2~4,编译+执行
2、字节码是什么?是机器的那种二进制代码吗?
答:不是,两者是不一样的,字节码是Python特有的一种表现形式(学过Java的人都知道,这一点和Java比较类似),二进制代码是机器可以直接读取的,而字节码是机器无法自己读取的,中间还需要PVM的运行,这里要特别说明一点,如果是在交互式命令行中输入,是不需要字节码的,只有运行单独的“.py”文件时才会有字节码
3、编译后的字节码文件在哪里?我们能看吗?
答:一般来说会与源代码文件在同一个文件夹,可以打开看,我之前用txt打开过,但是看到的都是乱码,完全无法看懂,和源代码差异很大
4、Python源代码直接运行不就可以吗?为什么中间还需要编译和PVM,岂不是很繁琐?
答:说一个很简单的例子,苹果手机和安卓手机,同样的一款App是需要两种安装程序的,这个大家都理解,就是苹果手机上的app安装软件是不能直接安装在安卓手机上,安卓手机的软件不能直接安装在苹果手机上,为什么?因为两者的手机系统不一样,
同样的逻辑,我们虽然经常使用的是windows系统,但是电脑操作系统还有linux、Mac OS等,也就是说,如果需要一款软件,运行在不同的操作系统上,那你就需要编辑不同版本的软件,因为不同的操作系统,软件的实现方式是不一样的,为了避免这种重复性的工作,使得一个程序文件可以在不同系统中运行,Python(还有Java)就使用了这种编译+PVM的形式,这种形式的好处就是平台无关性,也叫跨平台,
那什么叫平台无关性呢?就是一个Python程序,可以在不同的系统运行,也就是只写一次代码,可以处处运行(这个也是Java的优点),
这种形式为什么可以实现跨平台运行呢?在写Python程序前,需要安装Python的运行环境,根据每个人不同的操作系统,下载适应的Python版本,编译后的字节码是通过PVM运行的,而PVM的实现是根据机器语言实现的,所以编译后的字节码就可以在任何有PVM的环境中运行Python程序,这样程序就不再依赖系统,就可以一处编译后,拿到各处平台系统运行
本章的重点是Python的运行机制,此外本书作者还介绍了Python语言的5中主要实现
1、Cpython:标准Python,也是本书作者采用的实现方式
2、Jython:基于Java的Python
3、IronPyhon:基于.Net de Python
4、Stackless:注重并发的Python
5、PyPy:注重速度的Python
此外还有讲解Cython、Shed Skin、Psyco等,因为本人是初学,所以对这些不甚理解,就不多说,后面有了解了再单独展开说,如果有对此感兴趣的,可自行百度了解
《Python学习手册 第五版》 -第2章 Python如何运行程序的更多相关文章
- 《Python学习手册 第五版》 -第13章 while循环和for循环
上一章已经讲过if条件语句,这章重点是循环语句:while.for 本章的重点内容 1.while循环 1)一般形式 2)break.continue.pass和循环的else 2.for循环 1)一 ...
- 《Python学习手册 第五版》 -第12章 if测试和语法规则
本章节的内容,主要讲解if语句,if语句是三大复合语句之一(其他两个是while和for),能处理编程中大多数逻辑运算 本章的重点内容如下: 1.if语句的基本形式(多路分支) 2.布尔表达式 3.i ...
- 《Python学习手册 第五版》 -第11章 赋值、表达式和打印
上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...
- 《Python学习手册 第五版》 -第10章 Python语句简介
前面在开始讲解数据类型的时候,有说过Python的知识结构,在此重温一下 Python知识结构: 程序由模块组成 模块包含语句 语句包含表达式 表达式创建并处理对象 关于知识结构,前面已经说过我自己的 ...
- 自学笔记系列:《Python学习手册 第五版》 -写在开始之前
今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...
- 《Python学习手册 第五版》 -第14章 迭代和推导
承接上一章for循环的讲解,迭代和推导,是对for循环的一种深入的探索和扩展 本章重点内容 1.迭代 1)什么是迭代?都有哪些分类 2)常规的使用方法 3)多遍迭代器VS单遍迭代器 2.列表推导 1) ...
- 《Python学习手册 第五版》 -第18章 参数
在函数的定义和调用中,参数是使用最多喝最频繁的,本章内容就是围绕函数的参数进行讲解 本章重点内容如下: 1.参数的传递 1)不可变得参数传递 2)可变得参数传递 2.参数的匹配模式 1)位置次序:从左 ...
- 《Python学习手册 第五版》 -第15章 文档
本章主要介绍Python中的文档,会通过多种方式来说明,如果查看Python自带文档和其他参考的资料 本章重点内容 1.#注释:源文件文档 2.dir函数:以列表显示对象中可用的属性 3.文档字符串 ...
- 《Python学习手册 第五版》 -第16章 函数基础
前面的章节讲解的是一些基础数据类型.基本语句使用和一些文档查看的内容,这些都是一些基础,其实还谈不上入门,只有了解了函数,才算入门 函数是编程里面使用最多的也是最基本的程序结构, 本章重点内容 1.函 ...
- 《Python学习手册 第五版》 -第17章 作用域
上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...
随机推荐
- JVM之对象
几乎所有对象都是在堆中分配内存的,这次来讲讲java的对象. 对象的创建主要分为以下几步: 首先,查看类是否装载.当JVM读取到new指令的时候,会拿着符号描述去方法区寻找它所属的类,如果未查找到,则 ...
- EFCore Database-first深入研究
EFCore Database-first深入研究 使用Scaffold-DbContext从数据库生成实体 说明文档: 关于 Scaffold-DbContext 微软有官方说明文档 https:/ ...
- 解决vue中element组件样式修改无效
vue中element组件样式修改无效 <style> .detail{ .el-input__inner { height: 48px; } } </style> 直接写st ...
- MySQL UTF-8 常用字符排序规则
排序规则 解释 utf8_general_ci 不区分大小写 utf8_general_cs 区分大小写 utf8_bin 区分大小写,字符串每个字符串用二进制数据编译存储,且支持存储二进制数据
- 递推预处理 + Manacher
链接:https://www.nowcoder.com/acm/contest/131/D来源:牛客网 字符串 S 只包含小写英文字母.有四种操作,每次操作你可以选择其中一种: 删除字符串的第一个字母 ...
- sender e
sender 产生事件的对象e 事件的参数
- ORM基础3 在python脚本里调用Django环境
1.查询 1.# all获取所有的object,结果QuerySet,列表 print('all'.center(80, '=')) ret = models.Person.objects.all() ...
- Java入门 - 高级教程 - 08.Applet
原文地址:http://www.work100.net/training/java-applet.html 更多教程:光束云 - 免费课程 Applet 序号 文内章节 视频 1 概述 2 Apple ...
- 在eclipse中导入源码
因为初学java有一个源码项目想要导入,在网上找了很多方法试了都不行,后来发现其实是想多了,这里说一个很简洁的方法.* 1.首先点eclipse中的File然后点import, 2. 然后选Gener ...
- c++ 文件的简单操作
文件的读取操作 在程序设计中,文件常用的操作不外乎--打开.读.写.流指针操作.关闭.我日常中使用的比较多,但从来 没有细细总结今天就总结下具体的用法. 相关概念 计算机上的文件其实是数据的集合,对文 ...