我有函数定义的字符串格式,如何将其转换为有效函数。
我了解到我可以使用exec
命令使其工作,但感觉我正在运行一个有错误的代码。
msg = """
def myfunction(input):
output = input.upper()
return output"""
exec(msg)
print myfunction('hello World')
显然,上面的代码会运行,因为我可以运行并看到输出:HELLO WORLD
,但是当我在IDE(Eclipse / Pydev)中编写代码时,它显示出恼人的错误。
我想知道这是(exec
)创建函数的正确方法,如果你必须根据字符串创建它吗?
或者有一些更通用和更好的方法来做到这一点?
谢谢!
答案 0 :(得分:3)
使用imp module怎么样?{{3}}应该更通用,更不容易出错?
import imp
# create a new module
module = imp.new_module("myModule")
msg = """
def myfunction(input):
output = input.upper()
return output"""
# import code into myModule
exec msg in module.__dict__
print module.myfunction("test")
答案 1 :(得分:2)
没有错。您的IDE只是无法检测到您在运行时创建的内容。如果您正计划在生产中使用该功能,则还应检查this