0
Decorators in python
Hello, I would be thankful if you could advice me. Do decorators modifies nested functions? For instance, in the following example, has the function ad() been modified by the decorator basic? def basic(func): def modified(): x=int(input(':')) y=int(input(':')) func(x,y) return modified @basic def ad(x,y): print(x+y) ad() If not then why when we call ad function it returns the decorated output?
2 odpowiedzi
+ 2
In short, yes. But only because it extends the functionality of the ad() function by wrapping it AND assigns this wrapped function to the name 'ad'. Using the @basic is just a simpler way of doing this:
ad = basic(ad)
They're the same: The name 'ad' now references the modified function, not the original.
If you want a decorated function but still want to reference the original function, you could do something like this:
ad_decor = basic(ad)
ad(5,7) # call original ad, prints 12
ad_decor() # call modified ad, asks for
# input, then sums and prints
+ 1
Mozzy Thank you very much! You helped me a lot!