2016-10-14 164 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

相關問題