编译Python,为什么忽略了一些错误的东西?
发布时间:2020-12-20 12:20:59 所属栏目:Python 来源:网络整理
导读:我写了一个错误的 Python例程:false而不是False.但是,在汇编时没有发现它.该程序必须运行到此行以通知错误行为. 为什么会这样? Python解释器/编译器中的东西是如何使它工作的呢? 你有一些参考吗? 解决方法 由于Python的动态特性,在编译时无法检测未定义
我写了一个错误的
Python例程:false而不是False.但是,在汇编时没有发现它.该程序必须运行到此行以通知错误行为.
为什么会这样? Python解释器/编译器中的东西是如何使它工作的呢? 你有一些参考吗? 解决方法
由于Python的动态特性,在编译时无法检测未定义的名称.只检查语法;如果语法很好,编译器会生成字节码,Python开始执行代码.
在给定的示例中,您将获得对全局名称false的引用.只有当字节码解释器尝试实际访问此全局名称时,才会出现错误. 为了说明,这是一个例子.你认为以下代码执行正常吗? globals()["snyfr".decode("rot13")] = 17 x = false 实际上它确实如此,因为第一行动态生成一个名为false的变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |