04 Python Decorators With Parameters

9 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€64.87
List Price:  €92.68
You save:  €27.80
£56.10
List Price:  £80.15
You save:  £24.04
CA$95.73
List Price:  CA$136.77
You save:  CA$41.03
A$105.62
List Price:  A$150.90
You save:  A$45.27
S$94.82
List Price:  S$135.47
You save:  S$40.64
HK$546.96
List Price:  HK$781.40
You save:  HK$234.44
CHF 63.69
List Price:  CHF 91
You save:  CHF 27.30
NOK kr765.17
List Price:  NOK kr1,093.15
You save:  NOK kr327.97
DKK kr484.68
List Price:  DKK kr692.43
You save:  DKK kr207.75
NZ$116.27
List Price:  NZ$166.11
You save:  NZ$49.83
د.إ257.07
List Price:  د.إ367.26
You save:  د.إ110.19
৳8,181.33
List Price:  ৳11,688.12
You save:  ৳3,506.78
₹5,847.43
List Price:  ₹8,353.82
You save:  ₹2,506.39
RM331.68
List Price:  RM473.85
You save:  RM142.17
₦104,194.90
List Price:  ₦148,856.25
You save:  ₦44,661.34
₨19,442.91
List Price:  ₨27,776.78
You save:  ₨8,333.86
฿2,558.45
List Price:  ฿3,655.09
You save:  ฿1,096.63
₺2,267.97
List Price:  ₺3,240.09
You save:  ₺972.12
B$360.92
List Price:  B$515.62
You save:  B$154.70
R1,298.69
List Price:  R1,855.35
You save:  R556.66
Лв127.05
List Price:  Лв181.51
You save:  Лв54.46
₩95,963.28
List Price:  ₩137,096.28
You save:  ₩41,133
₪260.58
List Price:  ₪372.28
You save:  ₪111.69
₱4,029.07
List Price:  ₱5,756.07
You save:  ₱1,726.99
¥10,902.69
List Price:  ¥15,575.94
You save:  ¥4,673.25
MX$1,174.46
List Price:  MX$1,677.87
You save:  MX$503.41
QR255.17
List Price:  QR364.55
You save:  QR109.37
P950.08
List Price:  P1,357.32
You save:  P407.23
KSh9,195.33
List Price:  KSh13,136.75
You save:  KSh3,941.42
E£3,312.04
List Price:  E£4,731.69
You save:  E£1,419.65
ብር4,015.16
List Price:  ብር5,736.19
You save:  ብር1,721.02
Kz58,375.85
List Price:  Kz83,397.65
You save:  Kz25,021.80
CLP$64,711.15
List Price:  CLP$92,448.46
You save:  CLP$27,737.31
CN¥505.79
List Price:  CN¥722.59
You save:  CN¥216.80
RD$4,068.93
List Price:  RD$5,813.01
You save:  RD$1,744.07
DA9,407.80
List Price:  DA13,440.29
You save:  DA4,032.49
FJ$158.92
List Price:  FJ$227.04
You save:  FJ$68.12
Q543.32
List Price:  Q776.21
You save:  Q232.88
GY$14,629.88
List Price:  GY$20,900.72
You save:  GY$6,270.84
ISK kr9,750.65
List Price:  ISK kr13,930.10
You save:  ISK kr4,179.44
DH700.98
List Price:  DH1,001.44
You save:  DH300.46
L1,241.18
List Price:  L1,773.19
You save:  L532.01
ден3,997.25
List Price:  ден5,710.60
You save:  ден1,713.35
MOP$562.78
List Price:  MOP$804.01
You save:  MOP$241.22
N$1,286.15
List Price:  N$1,837.44
You save:  N$551.28
C$2,574.22
List Price:  C$3,677.62
You save:  C$1,103.39
रु9,342.46
List Price:  रु13,346.95
You save:  रु4,004.48
S/258.07
List Price:  S/368.69
You save:  S/110.62
K271.37
List Price:  K387.68
You save:  K116.31
SAR262.49
List Price:  SAR375.01
You save:  SAR112.51
ZK1,914.19
List Price:  ZK2,734.67
You save:  ZK820.48
L323.44
List Price:  L462.08
You save:  L138.63
Kč1,618.95
List Price:  Kč2,312.89
You save:  Kč693.93
Ft25,197.33
List Price:  Ft35,997.73
You save:  Ft10,800.40
SEK kr760.36
List Price:  SEK kr1,086.27
You save:  SEK kr325.91
ARS$61,709.50
List Price:  ARS$88,160.22
You save:  ARS$26,450.71
Bs483.18
List Price:  Bs690.29
You save:  Bs207.10
COP$272,025.83
List Price:  COP$388,624.98
You save:  COP$116,599.15
₡35,836.73
List Price:  ₡51,197.52
You save:  ₡15,360.79
L1,728.26
List Price:  L2,469.04
You save:  L740.78
₲524,126.44
List Price:  ₲748,784.15
You save:  ₲224,657.71
$U2,694.96
List Price:  $U3,850.11
You save:  $U1,155.14
zł279.64
List Price:  zł399.51
You save:  zł119.86
Already have an account? Log In

Transcript

This is your facilitator commander for this course decorators in Python. Earlier we discussed definition of decorators its syntax, and how simple decorators could be created and how it works. In this video, we'll be discussing a bit more complex example of decorator. Besides we'll be discussing how decorators work with parameters. We also discussed that in the third video, but we are going to discuss this with more details and focus. And in the upcoming video, we'll be discussing more on chaining decorators in Python and detail and, and with focus.

So let's begin. Here I imported the library time, it had some calculating or time and I even if we want to like record the time, we can do this with the help of this library. We can also make the function sleep with the help of the functions available in this library. What we are going to do Here our focus is on parameters within decorators decorator functions. Here you can see that I've passed arguments and key value arguments as parameters within the time function. So, it means that there could be variable number of arguments here and variable number of key value arguments here, that could be passed within the time to function.

Now the core and the most important thing is when we are creating a decorator function with parameters we have to make sure that that the arguments that are being passed within the internal function of the decorator has to match with the decorator function with the function to be decorated. It has to be same. Let's discuss this. Here, we are using the input function here. And within that input function again, we have the same parameters. That is our variable number of arguments and variable number of key value arguments.

This is the most important thing when we are working with parameters within the decorator functions. Let's discuss the functionality of this function. This is the time test function, we have created another internal time function and we are passing arguments in key value argument within the time function. We just note the start time that is time dot time, this is a function within the timeline library and then we are passing on the function to be decorated that is input underscore funk and it also has the same arguments. Now then after that passing, we are recording the and time that is timed time. And then we are printing method name.

Argument one, key value argument two and the execution time and how do we want this to be formatted? Here, within the format function, we identify that input funk, whatever funk whatever function that we have defined. Created dot constructor name, the name of that function, the arguments on the first place arguments or key value arguments on the second place and the end time minus start time, that is how much time it took to execute the function. We have already recorded the start time, but at the start of this internal function within the decorator function and and time after that function decorated function has been passed, then what we are doing we are returning the result that is the internal function the function that we decorated and we are going to terminate the program terminate the function, this resolve function, then we are going to terminate the function and then we are going to move forward towards the time function and returning the time function.

Now, let's create the function to be decorated. This is the function we defined It also has the key variable number of arguments and key value arguments, what we are doing we are making this function to sleep for 0.6 seconds, it could be like any number, but why we are doing this. So, that is the difference between or there is a clear difference between the start time of the function and end time of the function so that we can know that how long that actually it took to execute that function. Then we are printing inside function and printing the arguments in key value arguments within that function. So, just before moving forward, let's execute this. Okay, this is executed.

Next again, and we execute this. This is also executed. Now, I'm testing this function and the arguments variable number of arguments I've passed as list that has hello world and The key value arguments I pass two key value pairs that is start and end. Okay. So when I execute this function, it prints inside funk that we just asked it to print, and then they give arguments in key value arguments we printed that. Now I decorated this function with the time test function that we initially created.

And now let's see how it works. So, I just printed that. Now this function has been decorated with time test function. When I executed this function with these parameters, it just meant it inside funk that was this and then it printed the arguments and then it printed the actual method name That is the func the argument HelloWorld. key value arguments are start two and five, and the execution type of timeout 0.6. So it actually took the 0.6 was the sleep time.

And actually, the whole running of this function took point triple 011 seconds. Now, let's go back to the actual decorator function. That function was calculating the start time and time after this decorator function is being done, or executed, and then it's printing all these things like the method name, the argument one, the arguments, the key value arguments, and the execution time and then returning this result, then returning the function and there you can see method Name arguments key value arguments and execution time. Another example here we are using a smart divide function. And what it does, it just divides not only just divides, it actually tests if the division is possible or not. For example, if the parameter pass is zero, instead of any positive integer, it division cannot take place because zero gives an error.

So, first of all we are printing a and b and its value and then we are checking if b is equals to zero, then the condition becomes true and it prints whoops cannot divide and then return or actually terminates the function and at the end it just returns the inner function. This is always going to take place you already know about it. Let's execute this. Okay, now using the smart device With the divide function, we decorating this, and then let's try this non providing three by zero and let's check out if it works or not. Yes, I'm going to divide three and zero oops, cannot divide. And if I divide it by two, I'm going to do it three and two, and it's resulted in 1.5.

So, as a keen observer, you must have noticed that the parameters of the nested function inside the decorator is same as the parameters a function that decorates So, the inner function that is within the decorator function has the same query parameter as the function to be decorated. And this is the same thing that we earlier discussed that the signature of inner function in the decorator must match the function to decorate signature of inner function in the decorator must match the function to decorate I hope now you have a better understanding of parameters and how to use parameters in decorated functions. And you'd be able to use that also, may you have any queries feel free to contact and in the upcoming video we'll be discussing chaining that decorators. Thank you. And don't forget to if you're looking to get connected, you can connect me by subscribing or by Cisco subscribing to my channel, youtube channel, by on Twitter, and also on Udemy by getting the course you can also message me if you're looking for 100% Scott a sponsorship of the course.

Thank you

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.