Terry J. Reedy <[email protected]> added the comment:
The 'roughly equivalent' Python code is real code that really runs, and in that
sense not pseudocode. itertools is coded in C, which allows optional args with
no default. To have optional args when coding in Python, either a default is
needed or the argument has to be turned into a residual args tuple of length 0
or 1. In the former case, 'var is None' should be read as being the equivalent
of 'var is undefined' in the C code.
In the latter case, the best equivalent, which has its own noise, might be
def repeat(object, *times):
if not times:
while True:
yield object
elif len(times) == 1:
for i in range(times[0]):
yield object
else:
raise TypeError(f'There can be at most 1 times argument, not
{len(times)}')
I prefer what we have.
----------
nosy: +terry.reedy
type: -> enhancement
versions: -Python 3.7
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue34169>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com