Измененная переменная Python также изменяет переменную, которую она назначила из [duplicate]

Связанный .lib-файл связан с .dll

У меня была такая же проблема. Скажем, у меня есть проекты MyProject и TestProject. Я эффективно связал файл lib для MyProject с TestProject. Однако этот файл lib был создан, так как была построена DLL для MyProject. Кроме того, я не содержал исходный код для всех методов в MyProject, но только доступ к точкам входа DLL.

Чтобы решить проблему, я построил MyProject как LIB и связал TestProject с этим .lib-файлом (скопируйте вложенный файл .lib в папку TestProject). Затем я смогу снова создать MyProject как DLL. Он компилируется, поскольку lib, с которым связан TestProject, содержит код для всех методов в классах MyProject.

1
задан rmarques 3 February 2014 в 22:29
поделиться

5 ответов

Следующее:

list_reversed = list 

заставляет две переменные ссылаться на один и тот же список.

Чтобы сделать копию, используйте

list_reversed = list[:]

. Еще лучше используйте встроенную функцию, вместо того чтобы писать свой собственный:

list_reversed = reversed(list)

PS Я бы рекомендовал не использовать list в качестве имени переменной, поскольку он тенерирует встроенный .

5
ответ дан NPE 3 September 2018 в 15:14
поделиться

Это касается общего поведения списков в python. Выполнение:

list_reversed = list

не копирует список, а ссылается на него. Вы можете запустить:

print(id(list_reversed))
print(id(list))

Оба будут выводить то же самое, что означает, что они являются одним и тем же объектом. Вы можете копировать списки по:

a = [1,2]
b = a.copy()

или

a = [1,2]
b = a[:]
0
ответ дан Ali Rasim Kocal 3 September 2018 в 15:14
поделиться

list_reversed = list не делает копию списка. Это просто делает list_reversed новое имя, указывающее на тот же список. Вы можете увидеть любое количество других вопросов об этом на этом сайте, некоторые из них в соответствующих вопросах справа.

0
ответ дан BrenBarn 3 September 2018 в 15:14
поделиться

list и reversed_list - тот же список. Таким образом, изменение одного также меняет другой.

Что вы должны сделать, так это:

reversed_list = list[::-1]

Это отменяет и копирует список одним махом.

0
ответ дан kindall 3 September 2018 в 15:14
поделиться

Когда вы делаете:

list_reversed = list

Вы не создаете копию list, вместо этого вы создаете новое имя (переменную), которое ссылается на тот же список, что и раньше. Вы можете увидеть это, добавив:

print(id(list_reversed), id(list))  # Notice, the same value!!
1
ответ дан mgilson 3 September 2018 в 15:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: