Первоначально я думал, что Python является чистым языком для передачи по ссылке.
Исходя из C/С++, я не могу не думать о управлении памятью, и это трудно вывести из головы. Поэтому я пытаюсь думать об этом с точки зрения Java и думать обо всем, кроме примитивов, как о переходе по ссылке.
Проблема: у меня есть список, содержащий кучу экземпляров определенного пользователем класса.
Если я использую синтаксис for-each, то есть.:
for member in my_list:
print(member.str);
Является ли member
эквивалентом фактической ссылки на объект?
Это эквивалент:
i = 0
while i < len(my_list):
print(my_list[i])
i += 1
Я думаю, что это НЕ, потому что, когда я ищу замену, это не работает, то есть это не работает:
for member in my_list:
if member == some_other_obj:
member = some_other_obj
Простая находка и замена в списке. Может ли это быть сделано в каждом цикле, если да, то каким образом? Кроме того, мне просто нужно использовать синтаксис произвольного доступа (квадратные скобки) или будет НИКОГДА работать, и мне нужно удалить запись и вставить новую? То есть:.
i = 0
for member in my_list:
if member == some_other_obj:
my_list.remove(i)
my_list.insert(i, member)
i += 1