Я начал изучать python и обнаружил что-то странное и хотел спросить об этом.
Ниже приведена кодировка, и я выделил часть функции, о которой у меня есть вопрос.
В конце функции def add_attraction(destination, attraction)
написано только return
без указания значения он возвращается. Но он по-прежнему возвращает значение, хранящееся в переменной attractions_for_destination
. Как это могло быть?
Другими словами, насколько я понимаю, attractions_for_destination = attractions[destination_index]
этот код сохраняет значение attractions[destination_index]
во вновь созданной переменной attractions_for_destination
. И через attractions_for_destination.append(attraction)
этот код добавляет изменение во вновь созданную переменную. Но в итоге изменилась переменная attractions
. Короче говоря, изменения добавляются к attractions_for_destination
, но я не понимаю, как attractions
также изменены.
Я задал этот вопрос где-то еще на inte rnet, и кто-то помог мне и кое-что упомянул о реферировании. На самом деле я этого не понимаю, потому что по-прежнему значение добавляется к переменной attractions_for_destination
, а не к переменной attractions
, но консоль показывает, что добавлена переменная attractions
. Может кто мне это прояснить?
destinations = ["Paris, France",
"Shanghai, China", "Los Angeles, USA", "Sao Paulo, Brazil", "Cairo, Egypt"]
test_traveler = ['Erin Wilkes', 'Shanghai, China', ['historical site', 'art']]
#destination index
destination_index = 0
def get_destination_index(destination):
destination_index = destinations.index(destination)
return destination_index
#traveler current destination
def get_traveler_location(traveler):
traveler_destination = traveler[1]
traveler_destination_index = get_destination_index(traveler_destination)
return traveler_destination_index
#finding traveler current destination index
test_destination_index = get_traveler_location(test_traveler)
attractions = [[] for destination in destinations]
def add_attraction(destination, attraction):
try:
destination_index = get_destination_index(destination)
except ValueError:
return
***attractions_for_destination = attractions[destination_index]
attractions_for_destination.append(attraction)
return***
add_attraction("Los Angeles, USA", ['venice Beach' , ['beach']])
print(attractions)