Python常用编译器原理及特点解析

python要知道怎么用好编译器。当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器,比如:

CPython

当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

以上的你都见过吧:虽然Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python编译为二进制so可执行文件实例

    通过cpython把python的文件转换为二进制文件,达到代码保护的目的 1.下载Cython-0.28.2.tar.gz python setup.py install安装 2.创建你需要打包成二进制的python文件 test.py def hello(s): print(s) 3.创建一个setup.py文件,内如如下: from distutils.core import setup from Cython.Build import cythonize setup( name = "t

  • python反编译学习之字节码详解

    前言 如果你曾经写过或者用过 Python,你可能已经习惯了看到 Python 源代码文件:它们的名称以.Py 结尾.你可能还见过另一种类型的文件是 .pyc 结尾的,它们就是 Python "字节码"文件.(在 Python3 的时候这个 .pyc 后缀的文件不太好找了,它在一个名为__pycache__的子目录下面.).pyc文件可以防止Python每次运行时都重新解析源代码,该文件大大节省了时间. Python是如何工作的 Python 通常被描述为一种解释语言,在这种语言中,你

  • windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)

    N久没有开始写博客了,总觉得要随便记点东西,岁月蹉跎,曾经搞得一些东西.技术.工具,说丢也就丢了,点点滴滴还是要记录一下吧... 在windows下使用pip安装一些python的第三方库,有很多使用C写了一些扩展,需要使用VC++ Compiler 来编译安装(也可使用MInGW,一般不推荐),否则就会出现"Unable to find vcvarsall.bat".像Python2.7就需要使用VS2008 C++ compiler , 而python3至python3.4 (py

  • 详解python编译器和解释器的区别

    高级语言不能直接被机器所理解执行,所以都需要一个翻译的阶段,解释型语言用到的是解释器,编译型语言用到的是编译器. 编译型语言通常的执行过程是:源代码--预处理器--编译器--目标代码--链接器--可执行程序. 某种意义上来说预处理事实上是一个附加的功能,C,PHP,都可以添加这种功能,其中,预处理指令多为头文件包含,宏定义等等.因为宏定义的核心说白了就是一个字"换",所以预处理就是提供一个程序执行的环境. 编译器--目标代码就是把高级程序语言转换成机器可以理解执行的机器语言. 链接器的

  • python 反编译exe文件为py文件的实例代码

    我们用pyinstaller把朋友文件打包成exe文件,但有时候我们需要还原,我们可以用pyinstxtractor.py 用法: python pyinstxtractor.py xxx.exe 之后得到一个这样结构的文件夹 --- xxx.exe_extracted -- out00-PYZ.pyz_extracted - 各种.pyc文件 -- out00-PYZ.pyz -- some -- others -- xxx(注意这些都是没后缀的) 然后再终端pip install uncom

  • 浅谈python编译pyc工程--导包问题解决

    利用python 编译工程,生产pyc文件 pyc文件好处:是一种二进制机器码,并且隐藏了源文件代码,但是有和py文件一样的功能(可以理解为效果一样) 所以可以将代码隐藏,便于商业价值,保护代码隐私还能和py文件一样可运行 import compileall compileall.compile_dir(r'/path') 所以在一些情况下,需将源文件工程批量生成pyc文件来隐藏代码. 上面代码即为 批量生成pyc的脚本更改path路径为根目录即可(根目录为最顶层目录需包括所有用到的文件) 运行

  • Cython编译python为so 代码加密示例

    1. 编译出来的so比网上流传的其他方法小很多. 2. language_level  是python的主版本号,如果python版本是2.x,目前的版本Cython需要人工指定language_level. 3. python setup.py build_ext --inplace  执行脚本 4. 以下是代码片段 from distutils.core import Extension, setup from Cython.Build import cythonize from Cytho

  • Python编译成.so文件进行加密后调用的实现

    pyc的破解相对容易,使用cython将python文件编译成.so文件,能在一定程度上增强python源码的私密性. 编译成.so文件 环境准备:cython 测试脚本准备:test.py #-*-coding: UTF-8 -* - class test: def say(self): print 'hello' 脚本编译准备: 3.1 编写compile.py文件,内容如下: #-*-coding: UTF-8 -* - from distutils.core import setup f

  • linux 编译安装python3.6的教程详解

    1. 首先去官网  https://www.python.org/downloads/source/ 下载 Gzipped source tarball 不要下载 " XZ compressed source tarball " ,目前 python3.6 最新版压缩包名字是:Python-3.6.7.tgz. 把下载的压缩包随便放到一个地方,也可以放到桌面(便于安装过后删除安装包和解压后的安装包). 2. 命令行切换到上面压缩文件所在的目录(比如桌面),然后输入 tar -xzf P

  • Python常用编译器原理及特点解析

    python要知道怎么用好编译器.当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大).事实上,确实存在多种Python解释器,比如: CPython 当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器

  • Python openpyxl模块原理及用法解析

    这篇文章主要介绍了Python openpyxl模块原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 此模块不是Python内置的模块需要安装,安装方法如下 pip install openpyxl 注意: 此模块只支持offce 2010,即是电子表格后缀是*.xlsx 1.openpyxl模块常用函数 import openpyxl wb = openpyxl.load_workbook('example.xlsx') ####

  • Python partial函数原理及用法解析

    这篇文章主要介绍了Python partial函数原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 介绍 partial其实是Python模块functools中定义的一个函数,当我们需要经常调用某个函数时,但是其中某些参数是已知的固定值,这样可能会让代码显得冗余,这个时候就可以考虑使用partial函数. 使用 假设我们要做二进制转十进制 int('1000000', base=2) # 64 int('1010101', bas

  • Python assert关键字原理及实例解析

    这篇文章主要介绍了Python assert关键字原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python assert(断言)用于判断一个表达式,在表达式条件为 False 的时候触发异常. 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况. 语法格式: assert expression 等价于: if not expression: raise AssertionError asser

  • Python定时任务APScheduler原理及实例解析

    定时任务: 1. 线程睡眠函数 sleep() --粗暴!一直占有 CPU 资源,导致后续操作无法执行 2. threading.Timer(10, task, ()).start() # (间隔s,任务task, 函参) 3. import sched # 初始化 sched 模块的 scheduler 类 scheduler = sched.scheduler(time.time, time.sleep) # 增加调度任务 enter(delay, priority, action, arg

  • Python子进程subpocess原理及用法解析

    python的子进程嘛,就是利用python打开一个子进程(当然像是一句废话),但是可能和我们理解的不太一样. 一:如何理解? 我们可能的理解:多开一个进程运行某个python函数(如果只想实现这个功能,请使用multiprocessing包) 正确的理解:python通过shell/cmd 打开一个新的程序进程,而不限于python函数,比如我们可以开一个"ls"指令的进程列出当前文件夹下的文件,这个"ls"指令明显是一个shell通用函数,而不是python 函

  • Python生成器generator原理及用法解析

    前言 生成器generator 生成器的本质是一个迭代器(iterator) 要理解生成器,就要在理解一下迭代,可迭代对象,迭代器,这三个概念 Python生成器generator简介 iteration, iterable, iterator 迭代(iteration):在python中迭代通常是通过for...in...来实现的.而且只要是可迭代对象iterable,都能进行迭代. 可迭代对象(iterable):Python中的任意的对象,只要它定义了可以返回一个迭代器的 __iter__

  • Python lambda表达式原理及用法解析

    开篇先明义:lambda是表达式,而def函数是语句代码块 所以lambda其实就是一个稍微高级一点的式子而已,只不过这个式子比较长,而且还会自己进行一些逻辑上的处理而已,心里不要虚 lambda也被叫做匿名函数,通俗点说就是一个没有名字的函数,那可不就是一个函数式子吗?在python的垃圾回收机制来看,如果一些内存空间没有引用指向,那这些内存空间就被回收掉,所以这个连名字都没有的匿名函数,肯定是用过即销的. 综上所述,我们可以很容易的得出lambda表达式的特点: 1.用一个表达式就能实现简单

  • Python常用模块函数代码汇总解析

    一.文件和目录操作 创建.删除.修改.拼接.获取当前目录.遍历目录下的文件.获取文件大小.修改日期.判断文件是否存在等.略 二.日期和时间(内置模块:time.datatime.calendar) 1.time.time() #返回自1970年1月1日0点到当前时间经过的秒数 实例1:获取某函数执行的时间,单位秒 import time before = time.time() func1 after = time.time() print(f"调用func1,花费时间{after-before

  • Python常用扩展插件使用教程解析

    扩展插件 我下载的本版自带 pip下载工具 cmd-pip 下载插件 pip install HTMLParser 如果提示版本问题,更新PIP 别用开始里面的CMD 使用管理者权限 请注意差别 输入 python -m pip install --upgrade pip 开始更新 完毕后,正常下载其他插件 插件默认安装路径 python -m site Python3.5.1 下使用HTMLParser报错 pip 安装HTMLParser之后,import HTMLParser 使用的时候,

随机推荐