def foo(x):
a = x
def bar():
nonlocal a
a += 1
print(a)
return bar
f = foo(3)
try:
f()
except:
print("Crap, integers in closures aren't assignable, since they're value types.")
def foo2(x):
a = [x]
def bar():
a[0] += 1
print(a[0])
return bar
f2 = foo2(3)
f2()
f2()
ZGVmIGZvbyh4KToKCWEgPSB4CglkZWYgYmFyKCk6CgkJbm9ubG9jYWwgYQoJCWEgKz0gMQoJCXByaW50KGEpCglyZXR1cm4gYmFyCgkKZiA9IGZvbygzKQp0cnk6CglmKCkKZXhjZXB0OgoJcHJpbnQoIkNyYXAsIGludGVnZXJzIGluIGNsb3N1cmVzIGFyZW4ndCBhc3NpZ25hYmxlLCBzaW5jZSB0aGV5J3JlIHZhbHVlIHR5cGVzLiIpCgkKZGVmIGZvbzIoeCk6CglhID0gW3hdCglkZWYgYmFyKCk6CgkJYVswXSArPSAxCgkJcHJpbnQoYVswXSkKCXJldHVybiBiYXIKCQpmMiA9IGZvbzIoMykKZjIoKQpmMigp