Python 是一门解释型的编程语言,因此它具有解释型语言的运行机制。

计算机程序,其实就是一组计算机指令,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算机高级语言。 高级语允许使用自然语言(通常就是英语)来编程,但高级语言的程序最终必须被翻译成机器指令来执行

高级语言按程序的执行方式可以分为编译型和解释型两种。

1、编译型语言

需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。

编译是把源代码编译成机器码,

链接是把各个模块的机器码和依赖库串连起来生成可执行文件。

优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。

缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

代表语言:C、C++、Pascal、Object-C以及最近很火的苹果新语言swift。

2、解释型语言

解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。

优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。跨平台比较容易,只需提供特定平台的解释器即可,每个特定平台上的解释器都负责将源程序解释成特定平台的机器指令。

缺点:每次执行解释型语言的程序都需要进行次编译,因此解释型语言的程序运行效率通常较低,而且不能脱离解释器独立运行 但

代表语言:JavaScript、Python、Erlang、PHP、Perl、Ruby

3、混合型语言

既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕。就出现了半编译型语言。比如C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行。Java先生成字节码再在Java虚拟机中解释执行。严格来说混合型语言属于解释型语言。C#更接近编译型语言。

Python 语言属于解释型语言,因此运行 Python程序时需要使用特定的解释器进行解释、执行。解释型的 Python 语言天生具有跨平台的能力,只要为 Python 提供相应平台的解释器即可。

动态语言和静态语言

有三个名词容易混淆:

Dynamic Programming Language (动态语言或动态编程语言)

Dynamically Typed Language (动态类型语言)

Statically Typed Language (静态类型语言)

动态类型语言和静态类型语言

1、动态类型语言

动态类型语言和动态语言是完全不同的两个概念。

动态类型语言:是指在运行期间才去做数据类型检查的语言,说的是数据类型,

动态语言:说的是运行是改变结构,说的是代码结构。

动态类型语言的数据类型不是在编译阶段决定的,而是把类型绑定延后到了运行阶段。

是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。

主要动态语言:Object-C、C#、JavaScript、PHP、Python、Erlang。

主要语言:Python、Ruby、Erlang、JavaScript、swift、PHP、Perl。

2、静态类型语言

静态语言的数据类型是在编译期间(或运行之前)确定的,编写代码的时候要明确确定变量的数据类型。

主要语言:C、C++、C#、Java、Object-C。

Python作为动态解释性语言,都说解释器慢,Python也有想办法提高一下运行速度的,那就是使用pyc文件。

我们编写的代码一般都会保存在以.py为后缀的文件中。在执行程序时,解释器逐行读取源代码并逐行解释运行。每执行一次,就重复一次这个过程,

这其中耗费了大量的重复性的解释工作。为了减少这一重复性的解释工作,Python引入了pyc文件,pyc文件是将py文件的解释结果保存下来的文件,

这样,下次再运行的时候就不用再解释了,直接使用pyc文件就可以了,这无疑大大提高了程序运行速度。

对于pyc文件,你必须知道以下几点:

对于当前调用的主程序不会生成pyc文件;

以import xxx或from xxx import xxx等方式导入主程序的模块才会生成pyc文件;

每次使用pyc文件时,都会根据pyc文件的创建时间和源模块进行对比,如果源模块有修改,则重新创建pyc文件,并覆盖先前的pyc文件,如果没有修改,直接使用pyc文件代替模块;

pyc文件统一保存在模块所在目录的pycache文件夹内。

python的运行机制是什么_Python 程序运行机制相关推荐

  1. python代码运行到一半终止_Python 程序运行时卡住,既不报错,也不停止,也不动,是什么原因?...

    光看这程序似乎也没有什么问题,而且卡住也有多种原因,题主的情况也不一定是卡住--我猜题主是根据一直没有输出来判断的吧. 还是先讲我的处理方案--调试.看来题主用的是类似于PyCharm的IDE,可以用 ...

  2. python出现invalid argument什么意思_python程序运行后提示IOError: [Errno 22] Invalid argument 急啊!!!!...

    程序如下:importfcntlimportosimporttimefromstructimport*#ConstantsINPUT='0'OUTPUT='1'PWM_FREQ=520#Pinnumb ...

  3. python执行结果在gui界面显示_Python PyQt5运行程序把输出信息展示到GUI图形界面上...

    概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题. 先演示一下效果最终效果吧,下面两张图用来镇楼.可以看到我们图形界面和程序运 ...

  4. python解析器原理_Python程序运行原理图文解析

    本文研究的主要是Python程序运行原理,具体介绍如下. 编译型语言(C语言为例) 动态型语言 一个程序是如何运行起来的?比如下面的代码 #othermodule.py def add(a, b): ...

  5. python怎么在运行中查看执行状态_python,_python程序运行时 查看对象状态,python - phpStudy...

    python程序运行时 查看对象状态 不知大家有没有用过Rthymbox的python console. Rthymbox可以在运行的时候,让它的 交互式命令行 对程序进行控制. 比如说可以调用pla ...

  6. python显示运行时间_python程序运行进程、使用时间、剩余时间显示功能的实现代码...

    有很多程序运行时间比较长,如果不将运行过程输出将很难判断程序运行的时间.下边这段程序将按照上图所示的格式输出程序运行进程.已用时间.剩余时间. def time_change(time_init): ...

  7. python面试技巧和注意事项_Python 程序员面试须知须会的5个问题

    原标题:Python 程序员面试须知须会的5个问题 作为一个程序员,可能或多或少经历过一些技术面试,有些是编程语言本身的问题,有些是跟工程相关的问题.今天我们来总结关于Python程序员面试的时候经常 ...

  8. python语言采用编译执行方式_Python程序的执行过程 解释型语言和编译型语言

    我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言,那么生成的*.pyc文件是什么呢?c应 ...

  9. python采用编译型方式执行_Python程序的执行过程 解释型语言和编译型语言

    我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言,那么生成的*.pyc文件是什么呢?c应 ...

  10. finclip小程序运行机制与微信小程序运行机制

    根据运行小程序的宿主应用环境不同,小程序也会有不同的启动机制. #1. 小程序启动 小程序会有两种情况,一种是冷启动,一种是热启动. 冷启动:用户首次打开或小程序被宿主应用主动销毁后再次打开的情况,此 ...

最新文章

  1. Windows下使用Visual Studio自带的MSVC,命令行编译C/C++程序
  2. 猫眼、淘票票两虎相争:下沉市场、服务、内容成决胜关键
  3. python学习-- for和if结合使用
  4. spring集成kafka
  5. Python+selenium 自动化-chrome驱动的下载安装
  6. C# asp.net mvc 配置多个route 参数
  7. 下拉列表与多选框以及GridView中的多选框的问题
  8. tsql_TSQL的历史
  9. nodejs和cnpm安装
  10. fatal: Not a git repository (or any of the parent directories): .git的解决办法
  11. Java-模拟KTV点歌(控制台程序)
  12. mysql 敏感词_过滤敏感词方式
  13. VScode中文注释乱码问题解决
  14. visio添加箭头图标
  15. 计算机综合症怎么治,哪些运动可以用来治疗“电脑综合症”
  16. [附源码]Java计算机毕业设计SSM房屋租赁系统
  17. MySQL索引优化(二)索引失效
  18. 计算机网络——CSMA-CA协议
  19. JDK软件安装+环境变量配置图文详解(Win10环境)
  20. Rosalind第28题——ros_bio28_PROB

热门文章

  1. ActiveMQ详细入门教程系列(一)
  2. NOI 2017 滚粗记
  3. php入门,windows安装与环境配置,基础语法学习
  4. 编译错误:invalid types ‘int[int]‘ for array subscrip-markdown编辑器
  5. 技嘉 AORUS Radeon RX 6700 XT ELITE 12G 显示卡潮流登场
  6. 免手机验证码网站备案
  7. 高盛:79页区块链报告-《从理论到实践》(附下载)
  8. COOC9.94一款用于文献计量和知识图谱绘制的软件
  9. asyncawait的前世今生
  10. 暴躁算法(剑指系列)-每日一练