Например, чем отличаются следующие фрагменты кода с точки зрения распределения памяти и создания ссылок -
Между вариантами 1 и 2, как во втором случае имеется переменная менеджера контекста во вложении Область действия позволяет вложенной функции «модифицировать» переменную c?
В случае 3 глобальные и локальные переменные объединяются с VBox. В случае 4, хотя локальная переменная g является локальной для области действия функции, ее можно изменить с помощью свойства children. Как дела 3 и 4 работают с точки зрения создания памяти / объекта?
import ipywidgets as w
from IPython.display import display
#Case 1:
def f1():
global c
c = 6
def f2():
c = 7
f2()
print(c)
f1()
#Case 2:
def f1():
global c
c = w.Output()
with c:
print(3)
def f2():
with c:
print(2)
f2()
f1()
#Case 3:
def f1():
global t
t = w.Dropdown(options = \
["a","b"]
g = w.label(description = "Some label")
box = w.HBox([t, g])
display(box)
f1()
t.value = "b"
#Case 4:
def f1():
global t
t = w.Dropdown(options = \
["a","b"]
g = w.label(description = "Some label")
global box
box = w.HBox([t, g])
display(box)
f1()
(box.children[1]).description = \
"changed label"