@erwit: Zmienna element w kolejnych obiegach pętli wskazuje na kolejne obiekty z collection. W każdym obiegu pętli jedyne co robimy, to nadpisujemy tę zmienną, by wskazywała na None. Ani kolekcja, ani żaden z elementów nie jest modyfikowany.
@xaoc: Tak, referencje w Pythonie różnią się od referencji i wskaźników w C++ i nie ma tu takiego pojęcia jak wskaźnik. Jeżeli przechodzisz z C++ to myśl o nich jak o wskaźnikach, których nie możesz do woli modyfikować np. dodając 1.
@erwit: On nic nie modyfikuje, ani nic nie zwraca. Trudno mi wyobrazić sobie sytuację, gdzie to byłoby zamierzone.
@xaoc: element to jest referencja. Ale element = None nie zmodyfikuje wskazywanego obiektu, tylko zmodyfikuje zmienną element, by wskazywała na wartość None.
@erwit: Nie robisz w tym kodzie nic tylko przysłaniasz zmienną element. Jest to po prostu bez sensu i tyle :)
Jakby tam był dalszy kod który spodziewa się, że element to jest faktyczna wartość z kolekcji, to nie będzie działać. Więc jak najbardziej takiej konstrukcji nie należy stosować.
@erwit: Jako, że to jest pierwsze pytanie, to zakładam, że tylko o to, że kod nie ma efektu, jakiego ktoś mógłby się spodziewać. Tylko, że to pytanie odsyła do kursu dla początkujących (jak się nie zna odpowiedzi) a totalnie początkujący po prostu tego nie zrozumie w ogóle. Natomiast ludzie, którzy przychodzą z innych języków muszą ogarnąć specyficzne rzeczy - w tym pytaniu mogą się zachować podobnie jak Ty. Czyli raczej
elementw kolejnych obiegach pętli wskazuje na kolejne obiekty zcollection. W każdym obiegu pętli jedyne co robimy, to nadpisujemy tę zmienną, by wskazywała naNone. Ani kolekcja, ani żaden z elementów nie jest modyfikowany.Ja bym w takim razie powiedział, że jest to wskaźnik. I wtedy by to miało dla mnie sens.
collection = Nonecollection = [1, 2, 3, 4, 5]
for element in collection:
element = None
print(element)
print(collection)
@xaoc:
elementto jest referencja. Aleelement = Nonenie zmodyfikuje wskazywanego obiektu, tylko zmodyfikuje zmiennąelement, by wskazywała na wartośćNone.element. Jest to po prostu bez sensu i tyle :)Jakby tam był dalszy kod który spodziewa się, że element to jest faktyczna wartość z kolekcji, to nie będzie działać. Więc jak najbardziej takiej konstrukcji nie należy stosować.
Tylko, że to pytanie odsyła do kursu dla początkujących (jak się nie zna odpowiedzi) a totalnie początkujący po prostu tego nie zrozumie w ogóle. Natomiast ludzie, którzy przychodzą z innych języków muszą ogarnąć specyficzne rzeczy - w tym pytaniu mogą się zachować podobnie jak Ty.
Czyli raczej