When running class code:
class foo():
    r = 2
    c = 2
    a = [[0 for i in range(c)] for j in range(r)]
    print(a)
foo()
This error is generated:
NameError: name 'c' is not defined
Though both r and c are show if using the locals() call after the definitions.
Admittingly a little bit weird, but still code encountered in real life :-)
Why is the c variable not visible in the inner list comprehension?
For comparison, when running this function code:
def foo():
    r = 2
    c = 2
    print(locals())
    a = [[0 for i in range(c)] for j in range(r)]
    print(a)
foo()
The expected result is shown:
[[0, 0], [0, 0]]
Both r and c are also show if using the locals() call after the definitions.
