Pull to refresh

В очередной раз столкнулся с "новички не умеют пользоваться global", поэтому для них написал 8 примеров для проверки понимания global, ну и mutable/immutable заодно.

# ok
foo = 1
def bar():
    print('in bar', foo)

bar()
print('out bar', foo)


# ok
foo = 1
def bar():
    foo = 2
    print('in bar', foo)

bar()
print('out bar', foo)


# UnboundLocalError
foo = 1
def bar():
    print('1, in bar', foo)
    foo = 2
    print('2, in bar', foo)

bar()
print('out bar', foo)


# ok
foo = 1
def bar():
    global foo
    print('1, in bar', foo)
    foo = 2
    print('in bar', foo)

bar()
print('out bar', foo)


# UnboundLocalError
foo = [1]
def bar():
    print('1, in bar', foo)
    foo = [2]
    print('2, in bar', foo)

bar()
print('out bar', foo)


# ok
foo = [1]
def bar():
    global foo
    print('1, in bar', foo)
    foo = [2]
    print('2, in bar', foo)

bar()
print('out bar', foo)


# ok ;)
foo = [1]
def bar():
    print('1, in bar', foo)
    foo.append(2)
    print('2, in bar', foo)

bar()
print('out bar', foo)


# ok ;)
foo = [1]
def bar():
    print('1, in bar', foo)
    foo[:] = [2]
    print('2, in bar', foo)

bar()
print('out bar', foo)

Total votes 9: ↑9 and ↓0+9
Comments3

Articles