On 8/11/2014 8:26 AM, Ben Hoyt wrote:
It seems to me this is something of a pointless discussion -- I highly
doubt the current situation is going to change, and it works very well.
Even if not perfect, sum() is for numbers, sep.join() for strings.
However, I will add one comment:

    I'm overall -1 on trying to change the current situation (except for
    adding a join() builtin or str.join class method).


Did you know there actually is a str.join "class method"?

A 'method' is a function accessed as an attribute of a class.
An 'instance method' is a method whose first parameter is an instance of the class. str.join is an instance method. A 'class method', wrapped as such with classmether(), usually by decorating it with @classmethod, would take the class as a parameter.

I've never
actually seen it used this way, but for people who just can't stand
sep.join(seq), you can always call str.join(sep, seq) -- works in Python
2 and 3:

 >>> str.join('.', ['abc', 'def', 'ghi'])
'abc.def.ghi'

One could even put 'join = str.join' at the top of a file.

All this is true of *every* instance method.  For instance
int.__add__(1, 2) == 1 .__add__(2) == 1 + 2
True

However, your point that people who cannot stand the abbreviation *could* use the full form that is being abbreviated.


In ancient Python, when strings did not have methods, the current string methods were functions in the string module. The functions were removed in 3.0. Their continued use in 2.x code is bad for 3.x compatibility, so I would not encourage it.

>>> help(string.join)  # 2.7.8
Help on function join in module string:

join(words, sep=' ')
    join(list [,sep]) -> string

    Return a string composed of the words in list, with
    intervening occurrences of sep.  The default separator is a
    single space.

'List' is obsolete. Since sometime before 2.7, 'words' meant an iterable of strings.

>>> def digits():
        for i in range(10):
                yield str(i)
        
>>> string.join(digits(), '')
'0123456789'

Of of the string functions, I believe the conversion of join (and its synonum 'joinfields') to a method has been the most contentious.

--
Terry Jan Reedy

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to