python - 为什么函数中的 exec 中的导入不起作用?

标签 python function import exec

我可以将导入语句放在一个字符串中,执行它,它可以工作(打印一个随机数字):

code = """
import random
def f():
    print random.randint(0,9)
"""

def f():
    pass

exec code
f()

现在,如果我把 exec codef() 放在它们自己的函数中并调用它,它就不起作用了。

def test():
    exec code
    f()

test()

它说 NameError: global name 'random' is not defined.

最佳答案

这个怎么样:

def test():
    exec (code, globals())
    f()

关于python - 为什么函数中的 exec 中的导入不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12505047/

相关文章:

android - 将项目从 Eclipse 导入到 Android Studio 时出错

python - 从什么时候开始在 Python 中存在 bytes() 函数?

linux - 程序集 x86-64 从堆栈中获取函数参数

algorithm - 伪代码函数返回处理树的两个结果

Javascript 函数调用自身

Java - 使用 .class 文件编译

java - 无法从 Jython 模块导入 Java 类

Python weave blitz DLL 错误

python - 是否可以使用 SRUN 而不是 SBATCH 在后台运行 SLURM 作业?

python - 安装redis时缺少redis库