iOS: почему я не могу добавить два NSTimeIntervals вместе?

Переменные Python содержат ссылки на значения . Таким образом, когда вы определяете список palin, вы передаете значение, на которое ссылается polly, а не сама переменная.

Вы должны представлять значения как воздушные шары, при этом переменными являются потоки, привязанные к этим воздушным шарам. "alive" - это воздушный шар, polly - это просто поток этого воздушного шара, а в списке palin есть другой поток, привязанный к тому же воздушному шару. В python список - это просто серия потоков, все номера которых начинаются с 0.

. Что вы делаете дальше, привяжите строку polly к новому шару "dead", но список все еще держится на старую нить, привязанную к воздушному шару "alive".

Вы можете заменить этот поток на "alive", удерживаемый списком, переназначив список по индексу для обращения к каждому потоку; в вашем примере это поток 1:

>>> palin[1] = polly
>>> palin
['parrot', 'dead']

Здесь я просто привязал поток palin[1] к тому же, к чему polly привязан, что бы это ни было.

Обратите внимание, что любая коллекция в python, такая как dict, set, tuple и т. Д. - это просто коллекции потоков. Некоторые из них могут обмениваться потоками для разных потоков, таких как списки и dicts, и это то, что делает что-то в python «изменчивым».

С другой стороны, строки not изменяемы. Как только вы определяете строку типа "dead" или "alive", это один шар. Вы можете связать его потоком (переменная, список или что-то еще), но вы не можете заменить буквы внутри него. Вы можете связать этот поток только с полной новой строкой.

Большинство вещей в python могут действовать как воздушные шары. Цели, строки, списки, функции, экземпляры, классы, все могут быть привязаны к переменной или привязаны к контейнеру.

Возможно, вы захотите прочитать трактат Ned Batchelder о именах Python .

0
задан Community 23 May 2017 в 12:06
поделиться