Python 如何将函数的所有参数保存为字符串?

Python 如何将函数的所有参数保存为字符串?,python,Python,我希望将函数的输入参数保存为字符串。我正在使用Python 3.7。我想保存该字符串以便调试 我能轻松做到的是: def Model(par1=150, par2=100) #some processing return results, par1 parameters = str(par1) + str(par2) def Model(--any number of parameters--) #some processing return results parameters

我希望将函数的输入参数保存为字符串。我正在使用Python 3.7。我想保存该字符串以便调试

我能轻松做到的是:

def Model(par1=150, par2=100)

#some processing

return results, par1

parameters = str(par1) + str(par2)
def Model(--any number of parameters--)

#some processing

return results

parameters = --all parameters of Model--
但是,我希望能够自动保存所有参数,即使以后添加更多参数。因此,如果我将par3=300添加到函数中,“参数”也将包含str(par3),而不是手动添加它

我想要的行为是这样的:

def Model(par1=150, par2=100)

#some processing

return results, par1

parameters = str(par1) + str(par2)
def Model(--any number of parameters--)

#some processing

return results

parameters = --all parameters of Model--
我想让它自动完成的原因是,我希望,否则它会造成更多的麻烦,而不是更糟,因为我将不得不记住手动改变这一切的时间


是否可以将函数的所有参数保存为字符串(或以任何其他方式,以便我稍后轻松检查函数运行时使用的参数)?

您可以尝试类似的方法

def foo(param1, param2):
    parameters = list(locals().items())
    print(parameters)
foo(100,200)

# Outputs 
[('param1', 100), ('param2', 200)]
用解决的问题

args = locals()

在函数开始时

如果你想有点新奇,你可以创建一个装饰器,并在你需要的任何地方使用它。这只是我写的一个简单的例子:

从functools导入包装
def保存参数(函数):
@包装(func)
def包装(*args,**kwargs):
print('Calling{}({}{}{}')。格式(
函数名,
连接(映射(str,args)),
“,”如果kwargs else“,
“,”.join(“{}={}.”kwargs.items()中k,v的格式(k,v)
))
返回函数(*args,**kwargs)
返回包装器
@保存参数
def f(a、b、c=3):
返回a+b+c
现在,无论何时调用
f()
,参数都会被打印出来
@save_params
可用于任何其他方法,以跟踪调试期间传入的参数。看起来是这样的:

def Model(par1=150, par2=100)

#some processing

return results, par1

parameters = str(par1) + str(par2)
def Model(--any number of parameters--)

#some processing

return results

parameters = --all parameters of Model--
f(1,2) 呼叫f(1,2) 6. >>>f(1,2,c=7) 呼叫f(1,2,c=7) 10
谢谢!这正是我所需要的。我只是在函数的开头将其保存为``args=locals()``没问题!如果答案有用,请接受。谢谢!这些链接很有帮助。