【发布时间】:2011-10-16 21:55:18
【问题描述】:
据我了解:
解释型语言是一种高级语言,由解释器(将高级语言转换为机器代码然后执行的程序)在运行中运行和执行;它一次处理一点程序。
已编译语言是一种高级语言,其代码首先由编译器(将高级语言转换为机器代码的程序)转换为机器代码,然后由executor(另一个运行代码的程序)。
如果我的定义有误,请纠正我。
现在回到 Python,我对此感到有些困惑。在任何地方,您都知道 Python 是一种解释型语言,但它被解释为一些中间代码(如字节码或 IL),而 不是 为机器代码。那么哪个程序会执行 IM 代码呢?请帮助我了解如何处理和运行 Python 脚本。
【问题讨论】:
-
无论何时导入库,Python 都会创建 .pyc 文件(所谓的字节码)。 AFAIK 字节码只能加快加载时间,而不是执行时间。
-
@aitchnyu:在 .pyc 文件中缓存字节码只会加快加载速度,但前提是 Python 代码在执行之前被编译为字节码。虽然我不认为它已经专门用 Python 进行过尝试,但其他语言实现表明字节码确实比普通的 AST 更容易有效地解释,或者更糟糕的是,未解析的源代码。例如,较旧的 Ruby 版本从 AST 解释,AFAIK 的性能优于编译为字节码的较新版本。
-
不想听起来粗鲁,但这不是我的意思吗(但不像你那么有见识)?
-
@aitchnyu:我不明白你的意思。我只知道您的评论没有错误,但为一些背景信息提供了很好的机会为什么它只会加快加载时间,所以我决定添加这些信息。无意冒犯或采取冒犯:)
标签: python interpreted-language