您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python中eval函数的作用域

python中eval函数的作用域

生成实现为功能范围

在类块中定义的名称范围仅限于该类块。它不会扩展到方法代码块– 。

因此,dict()构造函数内部的生成器具有自己的locals()字典。现在,让我们来看看Py_eval的源代码,特别是当这两个globals()locals()是无:

if (globals == Py_None) {
        globals = PyEval_GetGlobals();
        if (locals == Py_None)
            locals = PyEval_GetLocals();
    }

因此,对于您的示例PyEval_GetLocals(),在循环执行时globals()将为空,它将成为全局字典。需要注意的是ijk函数中定义不在发电机的局部范围内,而他们是在它的封闭范围:

>>> dict((name,eval(name, globals(), {})) for name in ['i', 'j', 'k'])
{'i': 7, 'k': 10, 'j': 8}
python 2022/1/1 18:33:16 有207人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶