Если мы будем оценивать эти строки один за другим, x будет создан в контексте cc.
Begin["cc`"];
x = 1;
End[]
Однако, если мы их оценим вместе,
(Begin["cc`"];
x = 1;
End[])
то x будет создано в Global. Это несмотря на следующую печать cc`:
(Begin["cc`"];
Print[$Context];
End[])
В чем причина такого поведения? Я предполагаю, что контексты имеют значение только во время фазы анализа, а не для оценки.
Случай использования. Я хотел создать палитру Button, которая определит некоторые символы, если они еще не существуют, в контексте "private", чтобы избежать конфликта с глобальными. Какой предпочтительный способ сделать это, за исключением размещения всех определений в файле пакета и загрузки их из палитры? (Я хотел бы сохранить палитру автономной.)