Chinaunix

标题: eval使用问题 [打印本页]

作者: moatlzy    时间: 2008-12-19 19:27
标题: eval使用问题
>>> def test(a,b):
...         return a+b
...
>>> def test(a,b):
...         return a+b
...
>>> funcname='test'
>>> argtuple=(1,2)
>>> eval(funcname)argtuple
Traceback (  File "<interactive input>", line 1
    eval(funcname)argtuple
                         ^
SyntaxError: invalid syntax
求教为什么会出错啊?
作者: bluecrystal    时间: 2008-12-19 21:08
eval("test(1,2)")
作者: 3227049    时间: 2008-12-19 21:41
eval(funcname)(*argtuple)

globals()[funcname](*argtuple)

[ 本帖最后由 3227049 于 2008-12-19 23:09 编辑 ]
作者: king6o60    时间: 2008-12-19 22:48
eval(funcname)(*argtuple)
3楼正解,
也可以这样
eval( funcname + str(argtuple) )
作者: moatlzy    时间: 2008-12-20 00:49
谢谢各位,三楼正确,
eval( funcname + str(argtuple) )我试过可以,但如果参数中有句柄,对象之类时,好象就不行




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2