В вашем конкретном случае нет абсолютно никакой разницы между двумя выходами, когда вы связываете результаты с scalar
.В python вы склонны передавать массивы и списки по ссылке, а примитивы по значению.Итак, когда вы можете ожидать увидеть разницу?
Рассмотрите функцию:
>>> def manipulateX(X):
... X[len(X)-1] = -1
... return X
...
Когда вы вызываете manipulateX
со списком (как показано ниже), вы видите, что список такжеманипулировать:
>>> x = [1, 2, 3, 4]
>>> manipulateX(x)
[1, 2, 3, -1]
>>> x
[1, 2, 3, -1]
Однако, если вы определяете функцию, которая работает с примитивом
>>> def manipulateY(Y):
... Y += 20
... return Y
...
, и вызываете ее с элементом в коллекции (список, массив) и т. д .:
>>> manipulateY(x[0])
21
>>> x
[1, 2, 3, -1]
>>>
Вы видите, что x[0]
остается без изменений.В вашем случае, когда вы связываете свои результаты с scalar
, вы не видите никакой разницы.В обоих случаях использование вашей памяти также одинаково.Если вы не связывали результаты с scalar
, это зависит от того, хотите ли вы отключить звук x[0]
и y[0]
.