假设my_function()
位于 my_apps.views 我想导入my_function
动态地不使用类似的东西exec
or eval
.
有什么办法可以实现这一点吗?我想做类似的事情:
my_function = import_func("my_apps.views.my_function")
my_function()
... code is executed
你要
my_function = getattr(__import__('my_apps.views'), 'my_function')
如果您碰巧在编译时知道函数的名称,则可以将其缩短为
my_function = __import__('my_apps.views').my_function
这将加载my_apps.views
然后分配它的my_function
属性为本地my_function
.
如果你确定你只想要one功能,这还可以接受。如果你想要多个属性,你可以这样做:
views = __import__('my_apps.views')
my_function = getattr(views, 'my_function')
my_other_function = getattr(views, 'my_other_function')
my_attribute = getattr(views, 'my_attribute')
因为它更具可读性并且可以节省您的一些调用__import__
。同样,如果您知道名称,则可以如上所述缩短代码。
您也可以使用以下工具来完成此操作imp http://docs.python.org/library/imp.html模块,但比较复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)