#100DaysOfCode in Python Transcripts
Chapter: Days 22-24: Decorators
Lecture: Concepts: what did we learn

Login or purchase this course to watch this video and the rest of the course contents.
0:00 Alright now it's time to review what we've learned,
0:02 how to write a decorator.
0:05 A decorator takes a function to be decorated.
0:09 It adds behavior before, and or, after.
0:12 Then it returns the function.
0:15 Don't forget to use wraps to the preserve the doc string.
0:19 Args and keyword args.
0:21 There are various ways you can call a function in Python.
0:26 The simplest way is to use a required, positional argument.
0:30 If I leave off this argument, I get an error.
0:34 The second type, is the keyword argument
0:37 which can be set to a default.
0:40 And then we have two arbitrary sequences which are the list,
0:44 in this case sports, and keyword arguments
0:47 which always go last.
0:49 Here is an example how you would call this
0:50 with all the types of arguments.
0:54 Let's write a timeit decorator.
0:56 It takes a function, starts the timer
0:59 before calling the functions, calls the function,
1:02 and ends the timer,
1:03 printing how long the function took to execute.
1:07 We define the decorator.
1:10 Here's how to apply it to a function.
1:14 You can stack decorators.
1:16 Note that the order matters.
1:20 As timeit is the outer decorator,
1:23 that's the one that wraps at the outer level.
1:26 Some examples of common decorators.
1:29 Here are two from the Flask documentation.
1:32 One checks if a user's logged in
1:34 and the other is performing caching.
1:37 Those are ideal examples of decorators
1:40 because they abstract away common behavior
1:43 which you want to apply to multiple functions.
1:46 Here's another example of a well known decorator
1:49 called LRU Cache.
1:52 You can find those in the Flask
1:54 and the Python documentation respectively.
1:58 And now it's your turn.