Well, why did you send this to the list instead of the newsgroup <wink>?
Seriously, because of the usual variety of delays in propagation &
overburdened sysadmins, I bet a lot of sites still don't have the group
-- and won't for a few weeks.
> ... Why do stringobjects not have methods?
You answered it later: "because strings are immutable". Ditto tuples,
and ditto ints, long ints, and floats (don't you miss being able to say
"3.pow(5)" too <grin>?).
The interesting question is _why_ strings and tuples (etc) are immutable,
and I don't have an interesting answer to that. Maybe Guido will shed
more light on these decisions?
> listobjects have their own methods so that I can say:
> [1, 3, 2].sort()
Note that this example (indirectly) answers your later question, "Why do
the listobject methods always return None?". If list.method() returned
the updated list, then actually using
[1, 3, 2].sort()
as a line of Python would cause
[1, 2, 3]
to get printed. Remember that Python automatically prints every non-None
expression! Changing Python so that list methods returned anything other
than None would cause massive amounts of existing code to start printing
all sorts of unwanted stuff.
> ... I'll often tack things on to the end of a string with:
> string = string + char
> and this goes and creates a new string object that is the combination
> of the first string and the new char. Wouldn't it be more efficient to
> simply add the char onto the end of the original string?
Pprobably, if there were no other references to the original value of the
string. I say just "probably" because doing a realloc to extend existing
space may (depending on the host) be more expensive than malloc'ing new
> It would be more useful if [list methods] returned the listobject that
> resulted from the method call. That way I could chain operations
> together like so:
> mylist = [1, 2, 3].reverse().append(0).reverse()
> and mylist would == [0, 1, 2, 3].
Prediction: You'll lose interest in this after you get more Python
coding under your belt. Why? Because it's rarely useful. E.g., if you
really want to add something to the start of a list (as you're doing in
your example), it's better in every respect to just say
Similarly, it's almost never useful to apply a list method to a list
literal (so you'll almost always have a name by which to get at the
proposition-ly y'rs - tim the obscure
Tim Peters email@example.com
not speaking for Kendall Square Research Corp