[SciPy-dev] [SciPy-user] default dtype
Ed Schofield
schofield at ftw.at
Sun Jan 1 21:38:31 EST 2006
On 30/12/2005, at 7:14 PM, Travis Oliphant wrote:
> Alan G Isaac wrote:
>
>> Is an integer data type the obvious
>> default for 'empty'? I expected float.
>>
> This question comes up occasionally. The reason for int is largely
> historical --- that's what was decided long ago when Numeric came out.
> Changing this in some places would break a lot of code, I'm afraid.
> And the default for empty is done for consistency. I felt it
> better to
> have one default rather than many.
>
> The default can be changed in one place in the C-code if we did decide
> to change it. Now's the time because version 1.0 is approaching
> in the
> next couple of months. Version 0.9 will be the first-of-the-year
> release.
+5 on changing the default to float. I think we'd look back on this
decision in several years as difficult but right.
Here are some ideas on how we could ease the transition:
(1) We could provide new functions intzeros(), intones(), and intempty
() with the same behaviour as the current functions. That is,
integer types would be the default, but this could be overridden by a
dtype keyword argument. Then converting any old Numeric / numarray
code would just require another global string substitution in
convertcode.py.
(2) We could provide two sets of functions, intzeros() etc. and
floatzeros() etc., and remove the default interpretation altogether
from the standard zeros() functions. This is not ideal long term,
but could be a useful temporary measure during a transition for
shaking out bugs from the scicore and scipy trees.
(3) The default type could be chosen by the user as a package-level
global variable. I think this would be the best solution. Then the
old integer default could be turned on with one line of Python code.
I suppose that Python functions using this default, given the static
evaluation of default argument values, would need the "dtype=None"
idiom in function headers followed by dtype=global_dtype in the
function body.
-- Ed
More information about the SciPy-Dev
mailing list