Обновить

В очередной раз столкнулся с "новички не умеют пользоваться 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)

Всего голосов 9: ↑9 и ↓0+9
Комментарии3

Microsoft представила WSL 3.0 с поддержкой запуска Linux-контейнеров в Windows

Microsoft представила подсистему Windows для Linux (Windows Subsystem for Linux - WSL) 3.0, позволяющую запускать Linux‑приложения в Windows. Новая ветка примечательна реализацией возможности для запуска Linux‑контейнеров в Windows и переходом на ядро Linux 6.18. Исходный код применяемых в WSL утилит командной строки, фоновых процессов для Linux‑окружений, графического стека wslg, сервисов для запуска контейнеров и виртуальной машины опубликован на GitHub под лицензией MIT. Версия WSL 2.0 вышла в сентябре 2023 года.

Microsoft представила WSL 3.0 с поддержкой запуска Linux-контейнеров в Windows

Публикации