#๐Ÿ”’ need help with understanding returning functions in functions

11 messages ยท Page 1 of 1 (latest)

midnight belfry
#

hi, im a beginner. in the below code, why is the resultValue None?

def wrapper(func):
    def wrapPrintAndReturn():
        print('im inside wrapper')
        func()
    return wrapPrintAndReturn

@wrapper
def printAndReturn():
    print('im inside printAndReturn')
    return 'returned from printAndReturn'
    
returnValue = printAndReturn()
print(returnValue) #None```


but when i instead do `return func()` in `wrapPrintAndReturn`, the output is what i expect i.e. returnValue prints 'returned from printAndReturn' 
```py
def wrapper(func):
    def wrapPrintAndReturn():
        print('im inside wrapper')
        return func()
    return wrapPrintAndReturn

@wrapper
def printAndReturn():
    print('im inside printAndReturn')
    return 'returned from printAndReturn'
    
returnValue = printAndReturn()
print(returnValue)

can you help me understand the working? as i understand in the first code, printAndReturn functions gets overwritten as the function wrapPrintAndReturn which is returned by wrapper, so the func gets called which is the original printAndReturn, im thinking thereby printAndReturn should be returning the string 'returned from printAndReturn' which does not happen. why?

cobalt ruinBOT
#

@midnight belfry

Python help channel opened

Remember to:

  • Ask your Python question, not if you can ask or if there's an expert who can help.
  • Show a code sample as text (rather than a screenshot) and the error message, if you've got one.
  • Explain what you expect to happen and what actually happens.

:warning: Do not pip install anything that isn't related to your question, especially if asked to over DMs.

upper linden
midnight belfry
#

i have mostly worked with only java and c

upper linden
#

I don't think that JavaScript has anything similar to Python's decorators, but I don't think that it implicitly returns anything either

#

js has some weird things related to this though

midnight belfry
#

alright

#

!close

cobalt ruinBOT
#
Python help channel closed

This help channel has been closed and it's no longer possible to send messages here. If your question wasn't answered, feel free to create a new post in #1035199133436354600. To maximize your chances of getting a response, check out this guide on asking good questions.