2016-07-12 13 views
0

Ich möchte Funktionsnamen drucken mit diesem dictionary-Wie wird ein Wörterbuch mit Funktionsnamen gedruckt?

def pressKey() : 
    print "is pressed" 
def userLogin() : 
    print "Code to login to <Server Name> with <username>" 
act={'Login':userLogin,'press':pressKey} 

ich über diese versuchte (aus einer Antwort nahm)

for key, value in act.iteritems() : 
    print value,'()\t', 
    act[key]() 

Die Funktion (die zweite Zeile der Schleife) genannt wird aber dieser Code gibt die Ausgabe as-

<function pressKey at 0x0000000002F2DC88>() is pressed 

<function userLogin at 0x00000000039BAEB8>() Code to login to <Server Name> with <username> 

und ich möchte die Ausgabe as-

pressKey() ispressed 
userLogin() Code to login to <Server Name> with <username> 

Bitte helfen Sie, wie kann ich das bekommen! .Danke Ihnen im Voraus.

+0

Mögliches Duplikat von [Wie bekomme ich einen Funktionsnamen als String in Python?] (Http://stackoverflow.com/questions/251464/how-to-get-a-function-name-as-a-string -in-python) – zondo

Antwort

1

Wenn Sie wissen, dass sie alle Funktionen könnten Sie die __name__ Attribut den Namen der Funktion zu erhalten:

for key, value in act.iteritems(): 
    print value.__name__, '()\t', 
    act[key]() 

Notiz, die Sie eigentlich nicht key brauchen, da Sie value() statt act[key]() verwenden könnte das ist auch etwas effizienter:

for value in act.itervalues() : 
    print value.__name__, '()\t', 
    value() 
+0

danke es funktioniert :) – user6427776

1

Try this:

def pressKey() : 
    print "is pressed" 
def userLogin() : 
    print "Code to login to <Server Name> with <username>" 
act={'Login':userLogin,'press':pressKey} 
for key, value in act.iteritems() : 
    print value.__name__,'()\t', 
    act[key]() 
+0

danke das hat richtig funktioniert. :) – user6427776