详解python编译器和解释器的区别
高级语言不能直接被机器所理解执行,所以都需要一个翻译的阶段,解释型语言用到的是解释器,编译型语言用到的是编译器。
编译型语言通常的执行过程是:源代码——预处理器——编译器——目标代码——链接器——可执行程序。
某种意义上来说预处理事实上是一个附加的功能,C,PHP,都可以添加这种功能,其中,预处理指令多为头文件包含,宏定义等等。因为宏定义的核心说白了就是一个字“换”,所以预处理就是提供一个程序执行的环境。
编译器——目标代码就是把高级程序语言转换成机器可以理解执行的机器语言。
链接器的功能开始理解前要先了解一点。头文件在预处理过程中被编译成一个个单独的文件,也就是库文件。而程序是另外的文件,并不包含在库文件里。所以这就需要一个“胶水”把程序和库连接起来形成一个可执行文件(Windows是EXE)。这就是链接器的作用。
解释器理解就简单了,把程序一行行的的理解,执行。首先读一行代码,然后执行这一行代码的意思,接下来读下一行代码,执行次行代码。一次循环往复。
编译器则是读入所有代码,打包成可执行文件,执行。由于我们运行的一般都为编译过后的可执行文件,也就是执行的是机器语言(而且是IDE优化后的),所以运行速度要比解释型语言快。
相关推荐
-
python在线编译器的简单原理及简单实现代码
我们先来看一下效果(简单的写了一个): 原理:将post请求的代码数据写入了服务器的一个文件,然后用服务器的python编译器执行返回结果 实现代码: #flaskrun.py # -*- coding: utf-8 -*- # __author__="ZJL" from flask import Flask from flask import request from flask import Response import json import zxby app = Flask(
-
Pycharm更换python解释器的方法
安装了pycharm之后有一个新装的python解释器,顶替了之前系统的python 那样的话,原来利用pip安装的一些库会无法import. 要么加入环境变量,要么更换运行的解释器: Mac PyCharm > Preferences... > Project Interpreter > Python Interpreters Windows File->Default Settings...->Project Interpreter 以上这篇Pycharm更换python
-
Python3解释器知识点总结
Python3 解释器 Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /usr/local/python3 目录中. 安装完成后,我们可以将路径 /usr/local/python3/bin 添加到您的 Linux/Unix 操作系统的环境变量中,这样您就可以通过 shell 终端输入下面的命令来启动 Python3 . $ PATH=$PATH:/usr/local/python3/bin/python3 # 设置环境变量 $
-
详解python编译器和解释器的区别
高级语言不能直接被机器所理解执行,所以都需要一个翻译的阶段,解释型语言用到的是解释器,编译型语言用到的是编译器. 编译型语言通常的执行过程是:源代码--预处理器--编译器--目标代码--链接器--可执行程序. 某种意义上来说预处理事实上是一个附加的功能,C,PHP,都可以添加这种功能,其中,预处理指令多为头文件包含,宏定义等等.因为宏定义的核心说白了就是一个字"换",所以预处理就是提供一个程序执行的环境. 编译器--目标代码就是把高级程序语言转换成机器可以理解执行的机器语言. 链接器的
-
详解Python中@staticmethod和@classmethod区别及使用示例代码
本文主要介绍Python中,class(类)的装饰器@staticmethod和@classmethod的使用示例代码和它们的区别. 1.@staticmethod和@classmethod区别 @staticmethod:静态方法 @classmethod:类方法 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接通过类名就可以实现调用 使用:直接类名.方法名()来调用.@staticmethod
-
详解Python中is和==的区别
在Python中一切都是对象. Python中对象包含的三个基本要素,分别是: id(身份标识) type(数据类型) value(值) 对象之间比较是否相等可以用 == ,也可以用 is . is 和 == 都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同.下面来看看具体区别在哪? is 比较的是两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址. == 比较的是两个对象的内容是否相等,默认会调用对象的 __eq__ 方法. == 是pytho
-
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别 os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit().本文介绍这两种方式的区别和选择. os._exit()会直接将python程序终止,之后的所有代码都不会继续执行. sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那
-
分析详解python多线程与多进程区别
目录 1 基础知识 1.1 线程 1.2 进程 1.3 两者的区别 2 Python 多进程 2.1 创建多进程 方法1:直接使用Process 方法2:继承Process来自定义进程类,重写run方法 2.2 多进程通信 Queue Pipe 2.3 进程池 3 Python 多线程 3.1 GIL 3.2 创建多线程 方法1:直接使用threading.Thread() 方法2:继承threading.Thread来自定义线程类,重写run方法 3.3 线程合并 3.4 线程同步与互斥锁 3
-
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
先看一道GIL面试题: 描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因. GIL:又叫全局解释器锁,每个线程在执行的过程中都需要先获取GIL,保证同一时刻只有一个线程在运行,目的是解决多线程同时竞争程序中的全局变量而出现的线程安全问题.它并不是python语言的特性,仅仅是由于历史的原因在CPython解释器中难以移除,因为python语言运行环境大部分默认在CPython解释器中. 通过
-
详解Python中sorted()和sort()的使用与区别
目录 sort()方法是什么 如何妙用sorted() 方法 总结 在 Python 中,你可以使用 sorted() 方法或 sort() 方法对数据进行排序. 在本文中,我将提供 sorted() 和 sort() 方法的代码示例,并解释两者之间的区别. sort()方法是什么 此方法接受一个列表并对其进行排序.但,请记住此方法没有返回值,即返回None. 下面例子中,我们有一个数字列表,我们可以使用 sort() 方法按升序对列表进行排序. my_list = [67, 2, 999, 1
-
详解Python中range()与xrange()的区别
目录 前言 返回类型 记忆 操作使用 Speed 前言 range() 和 xrange() 是两个函数,可用于在 Python的 for 循环中迭代一定次数.在 Python 3 中,没有 xrange,但 range 函数的行为类似于 Python 2 中的 xrange.如果要编写可在 Python 2 和 Python 3 上运行的代码,则应使用 range(). range() – 这将返回一个范围对象(一种可迭代的类型). xrange() – 此函数返回生成器对象,该生成器对象
-
详解python方法之绑定方法与非绑定方法
写在之前 在 Python 的类里面除了属性之外,还有方法,当然也有文档和注释这类东西,但是这个只是人来看,计算机则不关心.我们之前说过,我们一般用实例调用方法,既然我们说了是一般,那么就说明还有其他调用方法的方式,今天我们就来说一下「绑定方法和非绑定方法」. 绑定方法和非绑定方法 在 Python 中除了特殊方法以外,类中的其他普通方法也是经常用到的,所以对于普通的方法也要进行研究,下面我们来看一个例子: >>> class Sample: ... def f(self): ... p
-
详解python字符串驻留技术
前言 每种编程语言为了表现出色,并且实现卓越的性能,都需要有大量编译器级与解释器级的优化. 由于字符串是任何编程语言中不可或缺的一个部分,因此,如果有快速操作字符串的能力,就可以迅速地提高整体的性能. 在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能.本文的目的不仅在于介绍 Python 的内部知识,而且还旨在使读者能够轻松地浏览 Python 的源代码:因此,本文中将有很多出自CP
随机推荐
- PostgreSQL教程(十一):服务器配置
- jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
- Vue.js实战之Vuex的入门教程
- 使用 Iisftp.vbs 启动FTP站点的方法
- Java爬虫抓取视频网站下载链接
- Hibernate框架中的缓存技术详解
- Python读取文件内容的三种常用方式及效率比较
- php轻松实现中英文混排字符串截取
- CI(Codeigniter)的Setting增强配置类实例
- php使用curl和正则表达式抓取网页数据示例
- python读写ini文件示例(python读写文件)
- 详解为 Docker 设置代理
- CSS2实现的隔行换色
- JavaScript中的console.log()函数详细介绍
- JSP过滤器防止Xss漏洞的实现方法(分享)
- c# in depth的泛型实现实例代码
- SQL语句技巧:按月统计数据
- MSSQL中递归SQL查询语句实例说明-
- SQLSERVERS 数据整理方法
- jquery遍历json对象集合详解