erst seit kurzem beschäftige ich mich mit Decorators und habe bei einem Testprogramm ein Verhalten entdeckt, dass ich mir nicht erklären kann. Im www habe ich dazu leider nichts gefunden.
Das ursprüngliche Programm:
Code: Alles auswählen
def afunc():
print 'afunc(): inside afunc'
def main():
print '**** main() ****'
print 'main(): calling afunc'
afunc()
print 'main(): returning from afunc'
main()
- **** main() ****
main(): calling afunc
afunc(): inside afunc
main(): returning from afunc
Jetzt erfinde ich einen decorator mydec() und schreibe je einen Aufruf vor die Funktionen afunc() und main():
Code: Alles auswählen
def mydec(inFunc):
print 'mydec(): calling', inFunc.__name__
inFunc()
print 'mydec(): returning from', inFunc.__name__
return inFunc
@mydec
def afunc():
print 'afunc(): inside afunc'
@mydec
def main():
print '**** main() ****'
print 'main(): calling afunc'
afunc()
print 'main(): returning from afunc'
main()
- mydec(): calling main
**** main() ****
main(): calling afunc
mydec(): calling afunc
afunc(): inside afunc
mydec(): returning from afunc
main(): returning from afunc
mydec(): returning from main
- mydec(): calling afunc
afunc(): inside afunc
mydec(): returning from afunc
mydec(): calling main
**** main() ****
main(): calling afunc
afunc(): inside afunc
main(): returning from afunc
mydec(): returning from main
**** main() ****
main(): calling afunc
afunc(): inside afunc
main(): returning from afunc
Danke für Eure Hilfe.