Hope you read our previous note about the basic concept of python-decorators, if not, please read first
Let see what are the possible ways to utilise the decorators in real time.
Well, here we are going to learn the important 3 parameters passing into the decorator
1) Passing parameter to the decorator
2) passing the function as a parameter to the decorator
3) passing parameter to the function which we are passing to the decorator
DECORATOR FUNCTION - Usually kept hidden from the programmer as part of framework,
and, allow the programmer import this file to use
def moneyConversion(ConvertInto, InvestmentAmount):
moneyValue = {'USD': 61, 'SGD': 55, 'AUD': 51, 'DIRHAM': 18}
def Wrapper(InterstCalculator): #Wrapper is not a keyword, we can have any name for this method
if ConvertInto:
amount = InterstCalculator(InvestmentAmount)
newMoney = {}
for person in amount:
newMoney[person] = amount[person] / moneyValue[ConvertInto]
print newMoney
return Wrapper
InvestmentAmount = {'christ':1000,'Guna':5000, 'Rita': 1500, 'Habib': 3500, 'David': 5000}
interestRate = 6 # 6% (but we are not using this variable anywhere)
# It is our usual function that find the interest(amount*6/100) amount for the investors money
@moneyConversion('USD',InvestmentAmount)
def findInterest(Amount):
interestAmount = {}
for investor in Amount:
interestAmount[investor] = Amount[investor]*6/100
return interestAmount
What can we understand from the above example?
1) @moneyConversion('USD', InvestmentAmount) - This is the way we can pass a parameter to the decorator
2) The function(findInterest) will be passed to the Wrapper function which exists in the decorator
i.e., InterstCalculator = findInterest
3) Finally, we are extending the functionality of find interest into converting the INR to other Currencies
4) Decorator plays an important role in Framework development like Flask, Django, Robot
Framework, etc.,