|
|
|
|
|
by zipfle
3846 days ago
|
|
JavaScript's scoping is much friendlier for creating closures than Python's: def why_is_scoping_hard():
n = 4
def print_n():
print n
def modify_n(new_value):
n = new_value
print n
return [print_n, modify_n]
>>> print_n, modify_n = why_is_scoping_hard()
>>> print_n()
4
>>> modify_n(7)
7
>>> print_n()
4
When you assign to a variable it is automatically created in the local scope, shadowing a variable with the same name from an outer scope. If you don't assign to it, you get the value from the outer scope. If you try to print it, but then assign to it later, the print call raises an error. |
|