我想知道,只是为了好玩,如果我可以使用函数类构造函数创建函数,即没有语言构造def,就像通过实例化类型对象创建类一样。我知道,函数构造函数需要 2 个参数 - 代码对象和全局变量。但我不知道我应该如何正确编译源代码。
>>> def f():
... pass
>>> Function = type(f)
>>> Function
<class 'function'>
>>> code = compile("x + 10", "<string>", "exec")
>>> f = Function(code, globals())
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'x' is not defined
>>> f(20)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: <module>() takes 0 positional arguments but 1 was given