使用时出现Python版本问题类型.功能类型

2024-10-08 21:17:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我对建立在https://stackoverflow.com/a/10303539/4113228上的代码片段有问题

当我试图编译时:

import types
dynf = types.FunctionType(compile('print("wow")', 'dyn.py', 'exec'), {})
dynf()

在文件中测试.py使用python2.7,一切正常, 但当我尝试使用python3.5时,我得到:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dynf()
  File "dyn.py", line 1, in <module>
NameError: name 'print' is not defined

我是python编码的新手,我完全被困在这个。。非常感谢您的帮助!你知道吗


Tags: 代码inpyhttpsimportcomlinestackoverflow
1条回答
网友
1楼 · 发布于 2024-10-08 21:17:25

问题是您将一个空的dict作为globals传递—因此,编译的代码无法访问全局变量内置变量。你知道吗

要允许访问内置函数,请使用

import builtins
dynf = types.FunctionType(compile('print("wow")', 'dyn.py', 'exec'), {'__builtins__':builtins})

相关问题 更多 >

    热门问题