第二章主要讲解了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如何运行程序的更多相关文章

  1. 《Python学习手册 第五版》 -第13章 while循环和for循环

    上一章已经讲过if条件语句,这章重点是循环语句:while.for 本章的重点内容 1.while循环 1)一般形式 2)break.continue.pass和循环的else 2.for循环 1)一 ...

  2. 《Python学习手册 第五版》 -第12章 if测试和语法规则

    本章节的内容,主要讲解if语句,if语句是三大复合语句之一(其他两个是while和for),能处理编程中大多数逻辑运算 本章的重点内容如下: 1.if语句的基本形式(多路分支) 2.布尔表达式 3.i ...

  3. 《Python学习手册 第五版》 -第11章 赋值、表达式和打印

    上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...

  4. 《Python学习手册 第五版》 -第10章 Python语句简介

    前面在开始讲解数据类型的时候,有说过Python的知识结构,在此重温一下 Python知识结构: 程序由模块组成 模块包含语句 语句包含表达式 表达式创建并处理对象 关于知识结构,前面已经说过我自己的 ...

  5. 自学笔记系列:《Python学习手册 第五版》 -写在开始之前

    今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...

  6. 《Python学习手册 第五版》 -第14章 迭代和推导

    承接上一章for循环的讲解,迭代和推导,是对for循环的一种深入的探索和扩展 本章重点内容 1.迭代 1)什么是迭代?都有哪些分类 2)常规的使用方法 3)多遍迭代器VS单遍迭代器 2.列表推导 1) ...

  7. 《Python学习手册 第五版》 -第18章 参数

    在函数的定义和调用中,参数是使用最多喝最频繁的,本章内容就是围绕函数的参数进行讲解 本章重点内容如下: 1.参数的传递 1)不可变得参数传递 2)可变得参数传递 2.参数的匹配模式 1)位置次序:从左 ...

  8. 《Python学习手册 第五版》 -第15章 文档

    本章主要介绍Python中的文档,会通过多种方式来说明,如果查看Python自带文档和其他参考的资料 本章重点内容 1.#注释:源文件文档 2.dir函数:以列表显示对象中可用的属性 3.文档字符串 ...

  9. 《Python学习手册 第五版》 -第16章 函数基础

    前面的章节讲解的是一些基础数据类型.基本语句使用和一些文档查看的内容,这些都是一些基础,其实还谈不上入门,只有了解了函数,才算入门 函数是编程里面使用最多的也是最基本的程序结构, 本章重点内容 1.函 ...

  10. 《Python学习手册 第五版》 -第17章 作用域

    上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...

随机推荐

  1. Django之models高级进阶技术详解

    目录 一.常用字段 1.AutoField 2.IntegerField 3.CharField 4.自定义及使用char 5.DateField 6.DateTimeField 二.字段合集 三.字 ...

  2. 记录我的 python 学习历程-Day12 生成器/推导式/内置函数Ⅰ

    一.生成器 初识生成器 生成器的本质就是迭代器,在python社区中,大多数时候都把迭代器和生成器是做同一个概念. 唯一的不同就是: 迭代器都是Python给你提供的已经写好的工具或者通过数据转化得来 ...

  3. 用VSCode插件来一键填满Github的绿色格子吧-AutoCommit

    autoCommit 一个用于Git自动commit的VSCode插件,它可以用来补充之前忘记提交commit,帮助你把首页的绿色格子填满. 使用效果 使用本插件来控制commit次数. 如下图,你甚 ...

  4. 你的应用安全吗? ——用Xray和Synk保驾护航

    一.背景 在当下软件应用的开发过程当中,自研的内部代码所占的比例逐步地减少,开源的框架和共用库已经得到了广泛的引用.如下图所示,在一个Kubernetes部署的应用当中,我们自己开发代码所占的比例可能 ...

  5. python条件判断语句

    # 条件判断(if)语句: # 语法1: if 条件表达式 : 单行语句 # 语法2: if 条件表达式 : # 代码块(多行语句) # 执行的流程:if语句在执行时,会先对条件表达式进行求值判断, ...

  6. bfs + 路径输出

    You are given two pots, having the volume of A and B liters respectively. The following operations c ...

  7. Excel-条件格式

    今天运用了一下条件格式中的自建规则进行公式筛选, 设置格式那里一定要将$P$8修改为$P8 然后双击修改后的第一项进行单元格的自动填充

  8. matplotlib 直方图

    一.特点 数据必须是原始数据不能经过处理,数据连续型,显示一组或多组分布数据 histogram 直方图 normed 定额 二.核心 hist(x, bins=None, normed=None) ...

  9. pymysql总结

    一.创建数据库 import pymysql conn = pymysql.connect(host='ip', user='root', password='密码') # 以字典的形式返回操作结果 ...

  10. SpringSecurity 默认表单登录页展示流程源码

    SpringSecurity 默认表单登录页展示流程源码 本篇主要讲解 SpringSecurity提供的默认表单登录页 它是如何展示的的流程, 涉及 1.FilterSecurityIntercep ...