【发布时间】:2014-04-03 13:22:54
【问题描述】:
我有一个类似的字符串:
str = "pwd.getpwuid(1000)"
现在,如果我尝试 eval() 它可能会引发异常,因为我还没有导入 pwd(或者如果我有的话可能不会)。
所以我决定编写一个解析器:将字符串拆分为“。”并得到一个列表:
lis = ["pwd", "getpwuid(1000)"]
然后取lis[0],如果不包含"("或")"我打电话
importlib.import_module(lis[0])
然后再次进行评估。
我可以把同样的事情做得更好吗?
【问题讨论】:
-
还不错,虽然你一开始为什么会遇到这种情况?
-
这有点复杂,但我不能做不同的!
-
这个问题似乎是题外话,因为它属于codereview.stackexchange.com
-
@jonrsharpe,但是 OP 正在寻找他的代码的替代方法,我想这应该是可以接受的。
-
如果函数前面的前缀是某个对象怎么办?或者如果它是另一个模块中的某个对象?
标签: python eval python-importlib