• 《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等,因为本人是初学,所以对这些不甚理解,就不多说,后面有了解了再单独展开说,如果有对此感兴趣的,可自行百度了解

  • 相关阅读:
    应用JConsole学习Java GC
    删除MySQL重复数据
    Linux后台运行程序
    Jvm基础(2)-Java内存模型
    一个word合并项目的分布式架构设计
    Jvm基础(1)-Java运行时数据区
    【JPA】01 快速上手
    【Ubuntu】下载安装 20.04.版本 桌面端
    【Ubuntu】下载安装 12.04.5版本 桌面端
    【CentOS】tar包安装Tomcat
  • 原文地址:https://www.cnblogs.com/zhangjiyou/p/11964879.html
Copyright © 2020-2023  润新知