加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 以解释语言链接和加载

发布时间:2020-12-16 21:47:56 所属栏目:Python 来源:网络整理
导读:在编译语言中,源代码由编译器转换为目标代码,并且不同的目标文件(如果有多个文件)由链接器链接并由加载器加载到存储器中以供执行. 如果我有一个使用解释语言编写的应用程序(例如,ruby或python),并且如果源代码是跨文件分割的,那么文件恰好是在一起的时候.换

在编译语言中,源代码由编译器转换为目标代码,并且不同的目标文件(如果有多个文件)由链接器链接并由加载器加载到存储器中以供执行.

如果我有一个使用解释语言编写的应用程序(例如,ruby或python),并且如果源代码是跨文件分割的,那么文件恰好是在一起的时候.换句话说,链接什么时候完成?解释语言首先是否具有连接器和装载器,还是解释器可以完成所有操作?

我对此感到困惑,无法理解它!任何人都可以对此有所启发吗?!

最佳答案
解释语言或多或少是称为解释器的可执行文件的大型配置.该可执行文件(例如/usr/bin/python)是实际运行的程序.然后它读取它将执行的脚本(例如/home/alfe/bin/factorial.py)并以最简单的形式逐行执行它.

在此过程中,它可能会遇到对其他文件的引用(其他模块,例如/usr/python/lib/math.py),然后它将读取并解释这些文件.

许多此类语言都内置了机制,通过创建它们解释的脚本的字节码版本来减少此过程的开销.所以可能有一个文件/usr/python/lib/math.pyc,例如解释器在第一次处理后放在那里,它可以比原来的/usr/python/lib/math.py更快地读取和解释.但这并不是解释语言概念的一部分1.

有时,二进制库是解释语言的一部分;根据解释器的复杂程度,它可以在运行时链接该库,然后使用它.这对于需要高度优化的系统模块和东西来说是最典型的.

但总的来说,可以说根本没有生成二进制机器代码.在编译时没有任何关联.实际上,没有真正的编译时间,即使可以将输入脚本的第一次处理称为编译步骤.

脚注:

1)解释脚本的概念既不包括“编译”(将源预转换为更快速的解释形式),也不包括通过存储.pyc文件等文件来“缓存”此形式.关于将程序链接和拆分为多个文件或模块的问题,预编译和缓存的这些方面只是加速事情的技术细节.概念本身是:读取输入脚本的一行&执行它.然后阅读下一行,依此类推.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读