On Thu, Jan 16, 2014 at 1:42 AM, Terry Reedy <tjre...@udel.edu> wrote: > On 1/16/2014 3:31 AM, Serhiy Storchaka wrote: >> >> 16.01.14 08:05, Guido van Rossum написав(ла): >>> >>> In this specific case it's clear to me that the special-casing of >>> negative count is intentional -- presumably it emulates sequence >>> repetition, where e.g. 'a'*-1 == ''. >> >> >> In this specific case it's contrary to sequence repetition. Because >> repeat('a', -1) repeats 'a' forever. > > > 'Forever' only when the keyword is used and the value is -1. > In 3.4b2 > >>>> itertools.repeat('a', -1) > repeat('a', 0) >>>> itertools.repeat('a', times=-1) > repeat('a') >>>> itertools.repeat('a', times=-2) > repeat('a', -2) > > >> This is a point of Vajrasky's issue [1]. > > The first line is correct in both behavior and representation. > The second line behavior (and corresponding repr) are wrong. > The third line repr is wrong but the behavior is like the first. > >> [1] http://bugs.python.org/issue19145
Eew. This is much more wacko than I thought. (Serves me right for basically not caring about itertools :-(. ) It also mostly sounds like unintended -- I can't imagine the intention was to treat the keyword argument different than the positional argument, but I can easily imagine getting the logic slightly wrong. If I had complete freedom in redefining the spec I would treat positional and keyword the same, interpret absent or None to mean "forever" and explicit negative integers to mean the same as zero, and make repr show a positional integer >= 0 if the repeat isn't None. But I don't know if that's too much of a change. @Antoine: >> Passing in "None" here is inconvenient as it's an integer argument. > > Inconvenient for whom? The callee or the caller? I meant for the callee -- it's slightly complex to code up right. But IMO worth it. -- --Guido van Rossum (python.org/~guido) _______________________________________________ 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