Skip to main content

Python Decorators from the Best Site Ever

 This is a topic that I keep encountering but have struggled to fully grasp. To be fair I haven't looked too deeply into it. And now I am doing so. Python-course has a great article on the topic. They really go step by step. I've summarised what was in the article and re-written it in a way I understand it better.

A few notes about Python functions:

  • Function names are references to functions and you can assign multiple names to the same function
        e.g.  def func(x):
                    return x
                func2 = func
                ==>> Calling either func2(4) or func(4) would give the same output as they are just references to the same function 
  • Functions can be nested inside functions. I have done this a handful of times.
  • Functions can accept other functions as arguments. 
  • Functions can return functions
These features are important in understanding how a decorator works. A decorator allows you to add additional features to functions by modifying them.

Basic example of how a decorator works by python-course.

Here the function foo is wrapped in our_decorator which changes the way foo works. The above code block is essentially equivalent to the code below. It shows us what's happening "behind the scenes" when we use a @decorator. 


So essentially, we call the decorated function which is then passed to the decorator as an argument. The decorator does whatever it wants to it, and returns a modified object. I can't wait to try playing around with decorators now Though I'm not entirely certain what context I would use it in. 


Comments

Popular posts from this blog

Deviants in a normal world

It's definitely been a bit since I've seen this graphy. Anyone who has learnt about standard deviation knows this graph. Standard Deviation Standard deviation shows us how spread out all the values in a set are from the mean. The higher the standard deviation, the more spread out the values are over a wider range and the flatter this curve. In a normal distribution, most values are within 1 standard deviation from the mean(the green part of the graph). Apparently NumPy can calculate standard deviation too! import numpy numSet = [ *lots of numbers* ] numSetStdDev = numpy.std(numSet) Variance The variance also indicates how spread out the values in a set are. It measures the average degree to which each value differs from the mean. variance = standard deviation ^2 import numpy numSet = [ *lots of numbers * ] numSetVar = numpy.var(numSet) Source:  https://www.w3schools.com/python/python_ml_standard_deviation.asp

Snakes and ladders

I've started on my Python course. So far, the code has been familiar because the first few basic codes are similar to Javascript. And then modules happened. Confusion and despair! What is the world is 'if __name__ == "__main__": ' and why must I reach this section of my course on a public holiday when none of the instructors are in :( Stack overflow to the rescue, providing me a lifeline while I was drowning in a pit of serpents. I feel eternally indebted to a particular Mr Fooz.  Picture from  here From my understanding, when the Python interpreter reads a source file, it first sets the variable __name__ and then it executes all the code in the file. If that particular file that you are running(i.e. your module) is the main program, the interpreter will assign '__name__ = "__main__" '. Thereafter, any code in the aforementioned 'if' statement is run. If you have, instead, imported a module, the interpreter assigns '__name__ ...

Fizzbuzz

I was today years old when I found out what fizzbuzz was. Yes, I'm late to the party. I was in an interview where the interviewer mentioned that ordinarily they would ask interviewees in for a round of fizzbuzz challenges, as I know. Actually sir, no, I don't know ๐Ÿ‘€ But he sounded so certain that I must surely know what it is that I was afraid to say anything so I did what I always do when I panic. Look right back saying not a word. I googled this mysterious fizzbuzz problem:  It looks pretty easy. I don't think he meant this actual problem, but problems like this. Because this problem is way too easy to be an actual problem someone asks in an interview. I decided to work on it for fun:  Yup. Super easy. I wish this is all I were asked in an interview ๐Ÿ˜„