Just take a look at the code again. In the if/else clause we are returning greet and welcome, not greet() and welcome(). Why is that? It’s because when you put a pair of parentheses after it, the function gets executed; whereas if you don’t put parenthesis after it, then it can be passed around and can be assigned to other variables without executing it. Did you get it? Let me explain it in a little bit more detail. When we write a = hi(), hi() gets executed and because the name is yasoob by default, the function greet is returned. If we change the statement to a = hi(name = "ali") then the welcome function will be returned. We can also do print hi()() which outputs now you are in the greet() function.
Hegel recognized the failure of attaining a universal concept of beauty and, in his aesthetic essay, wrote that painting is one of the three "romantic" arts, along with Poetry and Music, for its symbolic, highly intellectual purpose. Painters who have written theoretical works on painting include Kandinsky and Paul Klee. In his essay, Kandinsky maintains that painting has a spiritual value, and he attaches primary colors to essential feelings or concepts, something that Goethe and other writers had already tried to do.
The decorate() proposal was that no new syntax be implemented -- instead a magic function that used introspection to manipulate the following function. Both Jp Calderone and Philip Eby produced implementations of functions that did this. Guido was pretty firmly against this -- with no new syntax, the magicness of a function like this is extremely high: