Это вопрос передачи параметров функции Python.Я хочу, чтобы функция Python корректировала размер массива, который является одним из справочных параметров функций.
Содержимое переданного массива изменяется внутри и снаружи функции.Каким-то образом обновленный размер / форма объекта массива не экспортируется из функции, хотя я думал, что Python передает параметры по ссылке.Я новичок в программировании на Python и ожидал, что все аспекты объекта будут обновлены по ссылке.Нужно ли явно «экспортировать» изменения?
#!/opt/local/bin/python2.7
# Function Test returning changed array
import numpy
def adjust( a1, a2 ) :
" Adjust passed arrays (my final function will choose which one to adjust from content) "
print str(a1.shape) + " At start inside function"
a1[-1,0] = 99
a1 = numpy.delete(a1, -1, 0)
print str(a1.shape) + " After delete inside function"
return None
d1 = numpy.array( [ [ 1, 2, 3],
[11, 12, 13],
[21, 22, 23],
[31, 32, 33] ] )
d2 = numpy.array( [ [ 9, 8, 7],
[19, 18, 17] ] )
print str(d1.shape) + " At start"
# Let us delete the last row
d1 = numpy.delete(d1, -1, 0)
print str(d1.shape) + " After delete"
# Worked as expected
# So far so good, now do it by object reference parameters in a function......
adjust( d1, d2 )
print d1
print str(d1.shape) + " After function delete return"
# Reference fails to update object properties
Каким-то образом объект массива, на который ссылаются, не получает обновленных атрибутов размера / формы.В возвращаемом массиве должно быть только 2 строки.
(4, 3) At start
(3, 3) After delete
(3, 3) At start inside function
(2, 3) After delete inside function
[[ 1 2 3]
[11 12 13]
[99 22 23]]
(3, 3) After function delete return
Таким образом, основной / глобальный код работает должным образом, функция не может отрегулировать размер, но теперь удаленная строка в конце показывает обновленные данные,Помня о том, что последняя функция выберет один из нескольких параметров для настройки, как мне полностью экспортировать измененную форму / размер параметра из функции?