python needs leaning stuff from other language

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sat Apr 4 03:25:30 CEST 2009


On Fri, 03 Apr 2009 22:42:33 +0100, Tim Wintle wrote:

> On Fri, 2009-04-03 at 13:12 -0400, Mel wrote:
>> >>> I think it would also be better to have One (and prefereably Only
>> >>> One) Obvious Way To Do It. That obvious way, for those who work
>> >>> with Python's ‘set’ and ‘dict’, is a ‘clear’ method. It seems best
>> >>> to have ‘list’ conform with this also.
>> >> 
>> >> Does that mean a one-off special case rule to forbid slices having a
>> >> default?
>> > 
>> > Why would it do that?
>> 
>> Well, if list.clear were truly and strictly to be the only way to clear
>> the contents of a list, then assigning nothing via the default slice
>> would have to be ruled out.  `somelist[:] = []` is just a special case
>> of assignment to a slice generally.
> 
> agreed. If .clear was to be added then really assignments to slices
> should be entirely removed.

That's total nonsense. Where do people get this ridiculous urban legend 
that there is "only one way to do it" in Python?

The Zen says:

"There should be one-- and preferably only one --obvious way to do it."

does not mean "only one way to do it". It is a *prescription* that there 
SHOULD be one OBVIOUS way to do a task, not a prohibition on more than 
one way to do a task.

Such a prohibition would be stupid *and* impossible to enforce:

# Four ways to remove trailing spaces from a string. There are others.

s.rstrip(" ")  # the one obvious way


while s.endswith(" "):
    s = s[:-1]


while True:
    if s[-1] == ' ':
        s = s[0:-1]
    else:
        break


L = []
trailing_spaces = True
for c in reversed(s):
    if c == ' ' and trailing_spaces:
         continue
    trailing_spaces = False
    L.append(c)
L.reverse()
s = ''.join(L)



-- 
Steven



More information about the Python-list mailing list