gpt4 book ai didi

使用 types.FunctionType 时的 Python 版本问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:11 25 4
gpt4 key购买 nike

我对基于 https://stackoverflow.com/a/10303539/4113228 的代码片段有疑问

当我尝试编译时:

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

在使用 python2.7 的文件 test.py 中,一切正常,但是当我尝试使用 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 编码的新手,我完全被困在这个问题上。非常感谢您的帮助!

最佳答案

问题是您将空字典作为 globals 传递 - 因此,编译后的代码无法访问全局变量 内置变量。

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

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

关于使用 types.FunctionType 时的 Python 版本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com