2016-10-14 7 views
-1

Bitte lesen Sie sich durch. Dies ist KEIN Duplikat von zuvor gelösten Stack-Fragen.So erhalten Sie Funktionsargumente Namen Literale in Python

Wie erhalten Sie die Namen, String-Literale, von Argumenten an eine Funktion innerhalb der Funktionsumgebung übergeben?

Pseudo-Code:

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... 

Ideale Lösung:

$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' 

Jede Hilfe, die ich bekommen kann, wäre sehr geschätzt werden. Vielen Dank.

+0

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

+3

I‘ Tut mir leid, ich verstehe es nicht. Warum können Sie die Argumente nicht einfach "drucken"()? –

Antwort

1

inspect Modul bietet diese Innerlichkeit Funktionalität:

>>> 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: das funktioniert leider nur für arg # 3: 'num = 42'. Der Listen-Typ arg wird im wahrsten Sinne des Wortes mit Elementwerten und ohne Namen gedruckt ... Das gleiche gilt für 'Modell': Modelldetails, aber kein Name – remi

+0

Warum 'inspect' verwenden? Sie können nur die Namen und Werte von "Einheimischen" erhalten. – ekhumoro

+0

@ekhumoro ... weil Einheimische andere Namen darin haben, z. Abschlussvariablen. Woher weißt du, welche Argumente sind und welche nicht? – wim

Verwandte Themen