Correctness about variable scope
python, scope
Solution
As a rule of thumb, scopes are created in three places:
- File-scope - otherwise known as module scope
- Class-scope - created inside `class` blocks
- Function-scope - created inside `def` blocks
(There are a few exceptions to these.)
Assigning to a name reserves it in the scope namespace, marked as unbound until reaching the first assignment. So for a mental model, you are assigning values to names in a scope.
Problem
I'm currently developing some things in Python and I have a question about variables scope. This is the code: ``` a = None anything = False if anything: a = 1 else: a = 2 print a # prints 2 ``` If I remove the first line (a = None) the code still works as before. However in this case I'd be declaring the variable inside an "if" block, and regarding other languages like Java, that variable would only be visible inside the "if". How exactly variable scoping works in Python and what's the good way to program in cases like this? Thanks!