Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

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:45 Oh, and of course

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.

03:14 So let’s try that out.

Become a Member to join the conversation.