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
对于返回非常恼人。你看到我的编辑和我的评论了吗?你最后一句话是什么意思?