Decorator Spaß!
Ich möchte eine ‚Funktion Dispatch Wörterbuch‘ schafftPython Decorator zum Erstellen von Wörterbuch
Dekorateur ‚ASSIGN1‘ ein Wörterbuch erstellen, wie erwartet:
Dekorateur ‚Assign2‘ Ich versuche, das Wörterbuch Wert eines Tupels zu machen, werden die Dinge ein wenig seltsam
d1 = dict()
d2 = dict()
assign1 = lambda d, k: lambda f: d.setdefault(k, f)
assign2 = lambda d, k, s: lambda f: d.setdefault(k, (f,s))
@assign1 (d1, 'FW')
@assign1 (d1, 'PW')
def func1():
pass
@assign2 (d2, 'FW', 'XX')
@assign2 (d2, 'PW', 'XD')
@assign2 (d2, 'DF', 'XC')
def func2():
pass
print ('assign1')
for k in d1:
print ('{0} : {1}'.format(k, d1[k]))
print('assign2')
for k in d2:
print ('{0} : {1}'.format(k, d2[k]))
#Output
assign1
FW : <function func1 at 0x000000000311F400>
PW : <function func1 at 0x000000000311F400>
assign2
DF : (<function func2 at 0x000000000311F510>, 'XC')
FW : (((<function func2 at 0x000000000311F510>, 'XC'), 'XD'), 'XX')
PW : ((<function func2 at 0x000000000311F510>, 'XC'), 'XD')