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

Certified CSS Surgeon

I've just been certified as a top notch CSS Surgeon 😹😹😹. Codepip has just officially launched and they're offering CSS Surgeon for free until the 1st of September. I've already finished Flexbox Froggy(Free) and Grid Garden(Also free). I really do enjoy the CSS games on this website. It has helped me better understand CSS. There is still so much to learn. I've been trying to create a simple language learning website and it has been a struggle. I'm using the most simple website layout and yet it's just kicking my butt(I'm looking at you Nav bar). I hope to add some Javascript to make it more interactive in the future. At one point I really wanted to throw in the towel because it felt like I would never get this. It's hard not to give up when there are so many hurdles to cross. Can I really be confident at coding after just a 6 month bootcamp?

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

Portfolio on GitHub

As part of the bootcamp, I've been building a portfolio website based on a template provided by the school. Honestly, I hate the template. It is hideous. But I guess it's a great starting point for someone who is unsure about what to do. It was also an opportunity for me to practice publishing a website online. Unfortunately, I had to pay for a webhosting service. After submitting my third update to my portfolio website, one of the instructors suggested that I could use GitHub Pages instead. *mindblown* This is amaziiiiing. And it's so simple. When I finally get down to creating my own portfolio from scratch, I am definitely going to put it up on GitHub instead. Also, speaking of GitHub, I'm slowly understanding how GitHub functions. It is taking me awhile. Especially because I don't use many of the functions that are available. I look forward to learning more and becoming a GitHub extraordinaire :D JK