On 1/15/2014 9:25 PM, Vajrasky Kok wrote:
Dear friends,
from itertools import repeat
list(repeat('a', 3))
['a', 'a', 'a']
list(repeat('a', 0))
[]
repeat.__doc__
'repeat(object [,times]) -> create an iterator which returns the
object\nfor the specified number of times. If not specified, returns
the object\nendlessly.'
I think that the doc should say that a negative value is treated as 0
and that this is enough for a tracker issue after you get more feedback
or gather more info. There is at least one other builtin/stdlib function
that does this.
If you omit the times argument:
list(repeat('a'))
... unlimited of a .... sometimes it can hang your machine ....
In the C code it self, the default value of variable handling times
argument is -1.
Is is necessary to give times a pseudo-default? What is done in other
places (which are many) where a parameter is optional, with no default?
It checks how many arguments you give to the function.
So if you give -1 directly:
list(repeat('a', -1))
[]
Negative value of times argument means 0.
So what is the correct signature of this function? The value is not
really capturable in Python and C.
The signature in the doc is correct: times is optional, with no default
value. Instead, the function has a default behavior that does not need
the value. There are other examples. The (nearly) 'equivalent' Python
code in the doc fakes this with times=None, but passing None fails. I
think the same issue occurs in the random module.
repeat(object [,times = unlimited]) ????
Can we do this in Clinic? If not, should we?
I should hope that Clinic (and signature objects) can handle no-default
optional args, as there are several.
--
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