I am wondering if there is any way to set an array as read-only, so that any trial to modify values of elements in the array raises some warning. Is it a cool feature to prevent unexpected side effect? Daehyok Shin (Peter)
On Fri, 2004-05-21 at 23:05, Shin, Daehyok wrote:
I am wondering if there is any way to set an array as read-only, so that any trial to modify values of elements in the array raises some warning. Is it a cool feature to prevent unexpected side effect?
Daehyok Shin (Peter)
In numarray you can do this:
from numarray import * def make_readonly(a): .. v = a.view() .. s = a.tostring() .. v._data = s .. return v .. a = arange(100) b = make_readonly(a) b[0] = 1 Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: NA_setFromPythonScalar: assigment to readonly array buffer
This works because of the buffer protocol and the fact that a string is a read-only buffer. Using the buffer protocol is a numarray feature so I'm pretty sure Numeric can't do this. Also note that in C, this read-only array is actually writable. Regards, Todd
participants (2)
-
Shin, Daehyok
-
Todd Miller