Inspect Locals
  
    00:00
  
  
  On the right side, you see my IDLE editor where I have the code from the slide, which contains the visit_woods() function, as well as the invitation variable definition, which is “Let’s have a party!” and then the visit_woods() function call. Before continuing, let’s run the code and see if there is any output at all right now. At the moment, this program doesn’t output anything,
  
    00:29
  
  
  although there is a print() function call in it so let’s check why the print() function call doesn’t get executed. Inside the visit_woods() function where you have the nice bear docstring at the beginning, there is an if statement and the if statement says, if the string my_invitation in locals(), and that’s a function call so it’s locals(), print(my_invitation).
  
    01:01
  
  
  And interestingly enough, my_invitation at this point is not a string, but a variable name. So there is no error in the output, which is good because we apparently have a variable here that wasn’t defined and there is no output at all.
  
    01:18
  
  
  And then there is this locals() function call, which is a function that wasn’t defined anywhere here. So what is this locals() function?
  
    01:27
  
  
  To answer that, let’s just call the function in the root level of the script after the visit_woods() function call, let’s type locals(), save and run the file.
  
    01:47
  
  
  the locals() function call alone is not enough, but you also need to pass locals() into a print() function call to actually see what the locals() function returns.
  
    02:00
  
  
  So again, save and run the file. Now with the print() function call and now you see that there is a bunch of output there.
02:12 You can pause the video and explore a little bit what the output exactly is, but I will give you a brief overview.
  
    02:19
  
  
  Apparently, locals() gives back a dictionary with certain key-value pairs that somehow sound familiar. There is some __name__ key with the __main__ stream as the value.
  
    02:34
  
  
  There is also a __file__ key, which has the current Python file as a value. And there is also a visit_woods key, which contains the memory address of this function.
  
    02:47
  
  
  And then there is also an invitation key, which has the value “Let’s have a party!” and that is actually pretty amazing. locals() gives you back the dictionary of all the names that Python knows out of the local scope that it’s in right now.
  
    03:06
  
  
  So locals() inside the visit_woods() function probably has different values than if you call locals() outside of it.
Become a Member to join the conversation.
