2016-10-14 163 views
-1

请仔细阅读。这不是以前解决的相关Stack问题的重复。如何在Python中获取函数参数名称文字

如何获取名称,字符串文字,在函数环境中传递给函数的参数?

伪代码:

def myfunc(model, arg_is_list, num): 
    # define magical_command that gets args NAMES 
    print 'Your passed args are:', magical_command_return 
    # use arg_is_list, use model... 

的理想解决方案:

$mylist={} 
    $mylist=[1,2,3] 
    $linear = some_library_model 
    $myfunc(model='linear', arg_is_list='mylist', num=2) 
    >Your passed args are: 'linear', 'mylist', '2' 

任何帮助我能,将不胜感激。谢谢。

+0

http://stackoverflow.com/questions/544919/can-i-print-original-variables-name-in-python –

+3

我的可能的复制对不起,我不明白。为什么你不能简单地“打印()”参数? –

回答

1

inspect模块提供本内省功能:

>>> import inspect 
>>> 
>>> def myfunc(model, arg_is_list, num): 
...  print 'Your passed args are:', 
...  arg_names = inspect.getargspec(myfunc).args 
...  for name in arg_names: 
...   print repr(locals()[name]), 
... 
>>> myfunc(model='the model', arg_is_list='arrrggg', num=42) 
Your passed args are: 'the model' 'arrrggg' 42 
+0

@ wim:不幸的是,这只适用于arg#3:'num = 42'。 list-type arg实际上是用元素值和无名称打印的......对于'model'同样的东西:模型细节但不是名称 – remi

+0

为什么要使用'inspect'?你可以从'locals'获取名字和值。 – ekhumoro

+0

@ekhumoro ...因为当地人还有其他名字,例如闭包变量。你怎么知道哪些是争论,哪些不是? – wim

相关问题