在Python中,将参数作为函数中的字符串传递给函数

在Python中,将参数作为函数中的字符串传递给函数,python,Python,我目前正试图以字符串的形式访问Python函数的参数,因为我希望在函数输出的命名约定中使用这些参数。首先,我想创建一个函数,它只是“回显”它的参数(参见)。我试过这个: import inspect def echo_arguments(arg1,arg2): frame = inspect.currentframe() args, _, _, _ = inspect.getargvalues(frame) arg1=args[0] arg2=args[1]

我目前正试图以字符串的形式访问Python函数的参数,因为我希望在函数输出的命名约定中使用这些参数。首先,我想创建一个函数,它只是“回显”它的参数(参见)。我试过这个:

import inspect

def echo_arguments(arg1,arg2):
    frame = inspect.currentframe()
    args, _, _, _ = inspect.getargvalues(frame)
    arg1=args[0]
    arg2=args[1]
    return arg1, arg2
但是,如果我尝试调用它,我会得到以下结果:

>>> (h1,h2)=echo_arguments('hello','world')
>>> h1
'arg1'
>>> h2
'arg2'

换句话说,它返回的是定义函数时的“伪”参数,而不是调用函数时的“当前”参数。有人知道我如何得到后者吗?

要得到这些变量的内容,只需要变量本身

def echo_arguments(arg1, arg2):
    return arg1, arg2

>>> (h1, h2) = echo_arguments('hello', 'world')
>>> h1
'hello'
>>> h2
'world'

使用通过
getargvalues
返回的局部变量:

import inspect

def echo_arguments(arg1,arg2):
    frame = inspect.currentframe()
    args, _, _, locals_ = inspect.getargvalues(frame)
    return (locals_[arg] for arg in args)
结果:

>>> (h1,h2)=echo_arguments('hello','world')
>>> h1
'hello'
>>> h2
'world'

我将使用
inspect.getargvalues()
返回的ArgInfo对象。它包括参数名称以及本地指令中的当前值

In [1]: import inspect

In [2]: def foo(a,b=None):
   ...:     frame = inspect.currentframe()
   ...:     args = inspect.getargvalues(frame)
   ...:     return args

In [3]: args = foo(1234,b='qwerty')

In [4]: print args
ArgInfo(args=['a', 'b'], varargs=None, keywords=None, locals={'a': 1234, 'frame': <frame object at 0x072F4198>, 'b': 'qwerty'})

In [5]: print [(arg,args.locals[arg]) for arg in args.args]
[('a', 1234), ('b', 'qwerty')]
[1]中的
:导入检查
在[2]中:def foo(a,b=None):
…:frame=inspect.currentframe()
…:args=inspect.getargvalues(帧)
…:返回参数
在[3]中:args=foo(1234,b='qwerty')
在[4]中:打印参数
ArgInfo(args=['a','b'],varargs=None,keywords=None,locals={'a':1234,'frame':,'b':'qwerty'})
在[5]中:为args.args中的arg打印[(arg,args.locals[arg])]
[('a',1234),('b','qwerty')]

您能否详细说明一下您想要实现的目标?如果你在寻找一个简单地呼应其参数值的东西,你可以直接返回它们。如果您想知道它们的变量名称(即arg1、arg2),那么您所做的是正确的。不确定所需的输出是什么。
arg\u 1=args.locals[“arg1”]
将返回变量值