Python 从字符串中提取函数参数

Python 从字符串中提取函数参数,python,Python,我有以下几点意见: mystring="myobject" def foo(object): pass 我想用mystring直接调用foo(myobject),就像getattr(myclass,“mymethod”)一样 欢迎任何帮助。谢谢您可以从模块中解析myobject的值,该模块使用getattr定义。如果它在主模块中,则应该可以: import __main__ mystring = 'This is a test.' def foo(object): prin

我有以下几点意见:

mystring="myobject"
def foo(object):
    pass
我想用
mystring
直接调用
foo(myobject)
,就像
getattr(myclass,“mymethod”)
一样


欢迎任何帮助。谢谢您可以从模块中解析
myobject
的值,该模块使用
getattr
定义。如果它在主模块中,则应该可以:

import __main__

mystring = 'This is a test.'

def foo(object):
    print object

variableName = 'mystring'
foo(getattr(__main__, variableName))
variableName = 'variableName'
foo(getattr(__main__, variableName))
这应该打印出来

这是一个测试

可变名称

对于来自主作用域的变量,需要导入主模块


编辑:您还可以使用非常危险的
eval()
获取字符串的内容。只需用
foo(eval(variableName))
替换
foo(getattr(\uuuu main\uuuu,variableName))

您能详细说明您需要什么吗?也许你认为应该存在的语法。我不清楚您是在寻找
exec()
函数,还是在
foo()
中使用类似
getattr()的方法获取
foo()
的参数。我想不出哪种情况下第二个会很方便。这与
foo(mystring)
有何不同?是的,如果在靠近
foo()
的作用域中有其他
mystring
驻留,我的代码将查找名为
mystring
的变量。原因是,您可以使用变量而不是字符串文字。查看我的编辑。我已更新我的帖子。如果多次使用
mystring
的内容,则应使用
myvalue=eval(mystring)
对其进行一次解析,并使用
myvalue
作为参数。@macmoonshine感谢您的回答,只是我不希望'object'成为字符串。为了澄清:假设我有
mystring='[(1,1)、(2,2)、(3,3)]
,我想调用
foo([(1,1)、(2,2)、(3,3)]
。有可能使用
exec('foo('+mystring+'))
,但是如果foo有很多参数或者mystring中的列表经常被使用,那么效率就不高,
exec
对于
返回非常恼人。你看到我的编辑和我的评论了吗?你最后一句话是什么意思?