Когда вы делаете назначение, такое как в этом примере, вы создаете не новый объект, а ссылку на оригинал. Альтернативой является глубокая копия согласно https://docs.python.org/2/library/copy.html , однако, IMO, это довольно хакерский.
Как я избегаю проблем с этим, пытаясь сделать мои программы как можно более неизменными, то есть я не хочу переназначать переменные или изменять существующие переменные. Скорее, вы пытаетесь сохранить состояние объектов и создавать новые объекты на основе содержимого других.
Use
ForceDirectories('C:\TestFolder\Another\AndAnother');
(Это стандартная RTL-функция, находящаяся в SysUtils.pas. Следовательно, вам не нужно создавать свою собственную функцию, хотя это было бы несложно.)
Это использует новый IOUtils вместо SysUtils.
IOUtils межплатформенный совместимый и знающий UNC.
function ForceDirectories(FullPath: string): Boolean; // Works with UNC paths
begin
TDirectory.CreateDirectory(FullPath);
Result:= DirectoryExists(FullPath);
end;