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

编译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的变量.

(编辑:李大同)

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

    推荐文章
      热点阅读