gah! I hate the new string syntax

Amit Patel amitp at Xenon.Stanford.EDU
Sun Mar 4 01:45:40 EST 2001


 Russell E. Owen <owen at astrono.junkwashington.emu> wrote:
| In article <mailman.983485923.1136.python-list at python.org>,
|  "Sean 'Shaleh' Perry" <shaleh at valinux.com> wrote:
| 
| >return ";".join(["%s=%s" % (k, params[k]) for k in params.keys()])
| >
| >every day python seems to be moving closer to the line noise aspect of
| >coding.
| >
| 
| Mostly I think string methods are a great idea. One thing that annoyed 
| me about python early on was the plethora of global functions that made 
| more sense to me (a smalltalk lover, I admit) as methods. So overall I'm 
| very pleased to see the new string methods.
| 
| However, I do agree that join is not intuitive. I believe the problem 
| (at least for the way I look at it) is that join should be a list 
| method, not a string method. I.e.:
| 
|   joined_string = ['a', 'b'].join(', ')
| 
| makes a lot of sense to me. The current join string method does not.

One thing that I *liked* about Python was that it had a split(a,b)
function instead of a method:  a.split(b) or b.split(a).

When I see split(a,b), I think, "Oh, this isn't an inherent part of a
string-- *I* could write it, even though I didn't write the string
object."  

When I see b.split(a), I think, "This is a basic part of a string, and
I *cannot* write it."


If I have a split-like function I'd like to write (perhaps
re.split, or some custom split function), then what I'll see is:

          function style              method style

          string.split(a,b)           b.split(a)
          re.split(a,b)               re.split(a,b)
          mysplit(a,b)                mysplit(a,b)

Note that with the function style, they're consistent -- MY function
is on equal footing with string.split.  But with the new method style,
the split method on strings is elevated to a privileged position that
I cannot do for mysplit.  So now I have inconsistent syntax.

So I will continue to use string.split in my code.  I'll only use the
methods for things that are conceptually inherently tied to strings.
*Maybe* replace and index.  But certainly not capitalize or center.
They feel like a user definable function that are in the string module
for convenience.  At least in my mind, capitalize is NOT part of the
basic functionality of a string class.



      - Amit
-- 
--
Amit J Patel, Computer Science Department, Stanford University
http://www-cs-students.stanford.edu/~amitp/



More information about the Python-list mailing list