我要上课。在那个类中,我有一个函数。 在函数中,我有一个string变量,它保存了几个python函数的定义。在
我希望函数中的创建变量中定义的函数,这样它们将在全局范围内创建。在
在这个操作之后,我希望能够从全局范围调用新函数。在
例如:
class MyClass:
def create_functions():
functions_to_create = """
def glob1():
return "G1"
def glob2():
return "G2"
"""
# ----> HERE IS THE MISSING PART, LIKE RUNNING exec in the global scope <----
# The following function should work:
def other_function_in_global_scope():
print "glob1: %s, glob2: %s" % (glob1(), glob2())
缺少的部分应该是什么?在
提前谢谢!!!在
在python中,重写可以在任何时候修补任何内容,但是如果您只是在全局名称空间中计算一点代码,意外的符号冲突的风险就存在了。相反,我建议客户提供一个模块,如果在其中定义了函数,那么代码将调用其中的函数(否则为默认实现)。在
也就是说,documentation表明:
先做几件事。你为什么要创建一个函数来创建其他函数?你想干什么?也许还有更好的办法。这里还有另一种方法叫做create function,它不需要和exec一起玩。在
编辑
不使用exec注入源代码(这根本不是一个好主意)
你的客户提交他们的代码,然后只做一个自定义导入
在您希望让客户注入的代码中执行以下操作
导入操作系统 如果os.path.exists("自定义.py"): 导入自定义 自定义.注入()
这样他们就可以给你他们的代码你叫注入,他们可以改变事情。在
相关问题 更多 >
编程相关推荐