栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

指定本地人时,为什么Python 3 exec()失败?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

指定本地人时,为什么Python 3 exec()失败?

exec()
文档中:

请记住,在模块级别,全局变量和局部变量是相同的字典。如果

exec
获取两个单独的对象作为 globalslocals
,则代码将像嵌入在类定义中一样执行。

您传入了两个单独的字典,但是尝试执行需要模块范围全局变量可用的代码。

import math
在一个类中将产生一个 局部作用域属性
,并且您创建的函数将无法访问该 属性 ,因为函数闭包不考虑类作用域名称。

请参阅Python执行模型参考中的
命名和绑定

类定义块和参数

exec()
,并
eval()
在名称解析的情况下特别。类定义是可以使用和定义名称的可执行语句。这些引用遵循通常的名称解析规则,但在全局命名空间中查找未绑定的局部变量。类定义的名称空间成为该类的属性字典。在类块中定义的名称范围仅限于该类块。它不会扩展到方法[。]的代码块

您可以通过尝试在类定义中执行代码来重现错误:

>>> class Demo:...     import math...     def func(x):...         return math.sin(x)...     func(10)...Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "<stdin>", line 5, in Demo  File "<stdin>", line 4, in funcNameError: name 'math' is not defined

只需传递 本字典。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号