将 python 源代码加载到函数对象中
Load python source code into function object
我需要创建一个类似单元测试的框架,用于对单功能 python 作业进行轻量级自动评分。我很想做如下事情:
test = """
def foo(x):
return x * x
"""
compiled_module = magic_compile(test)
result = compiled_module.foo(3)
assert result == 9
有magic_compile
这样的功能吗?到目前为止我最好的是
exec(test)
result = getattr(sys.modules[__name__], 'foo')(3)
但这似乎很危险且不稳定。这不会 运行 在生产中,所以我不是超级关心沙盒和安全。只是想确保没有我遗漏的更好的解决方案。
在Python 3.x:
module = {}
exec(test, module)
assert module['foo'](3) == 9
module
不是真正的 Python 模块,它只是一个命名空间,用于保存代码的全局变量以避免污染模块的命名空间。
我需要创建一个类似单元测试的框架,用于对单功能 python 作业进行轻量级自动评分。我很想做如下事情:
test = """
def foo(x):
return x * x
"""
compiled_module = magic_compile(test)
result = compiled_module.foo(3)
assert result == 9
有magic_compile
这样的功能吗?到目前为止我最好的是
exec(test)
result = getattr(sys.modules[__name__], 'foo')(3)
但这似乎很危险且不稳定。这不会 运行 在生产中,所以我不是超级关心沙盒和安全。只是想确保没有我遗漏的更好的解决方案。
在Python 3.x:
module = {}
exec(test, module)
assert module['foo'](3) == 9
module
不是真正的 Python 模块,它只是一个命名空间,用于保存代码的全局变量以避免污染模块的命名空间。