tl;dr: A mix of tabs and spaces for your indent will cause this problem. At least in Python 2.7.
I post this since the answers I see in Google/Stackoverflow all talk about scope, and I didn't have a scope issue. That's pretty much it. This usually happens when I paste some code in from an example online (like from Stackoverflow, which I do like most of the time), it comes in with spaces but I prefer to use tabs.
Happy birthday, Half-Life 2!
2 hours ago