Я изучил PHP, и теперь я изучаю Python. Я написал этот код на обоих языках, но его поведение отличается.
PHP:
<?php
$x = [];
$y = $x;
$x['key'] = 'value';
var_dump($x);
var_dump($y);
Python:
x = {}
y = x
x['key'] = 'value'
print(x)
print(y)
y
имеет значение null в PHP, но не в Python.
Я хочу знать, почему..
В PHP, когда вы назначаете $y = $x
, он копирует массив. В Python словари - это объекты, и вы просто копируете ссылку, а не словарь. Если вы хотите скопировать словарь, это метод для этого:
x = {}
y = x.copy()
x['key'] = 'value'
print(x)
print(y)
Некоторые люди говорят, что у python нет переменных, у python есть имена. И имена присваиваются значению, а не значениям, присвоенным переменной.
например,
x =23
Теперь сделайте то, что вы делали раньше:
x = 23
y = x
Как вы можете видеть, два значения не создаются, а два имени указывают на то же значение 23.
Итак, я думаю, вы сейчас понимаете ситуацию. оба указывают на одно значение.
Итак, в вашем примере оба указывают на тот же словарь. Что произойдет, если одно имя изменит словарь. Другие имена будут иметь это изменение, потому что они указывают на тот же словарь. Надеюсь, он очистится.