[issue45154] Enumerate() function or class?

2021-09-09 Thread Steven D'Aprano


Steven D'Aprano  added the comment:

Thank you Raymond for the explanation. I didn't realise that there was a 
technical reason why built-in generators had to be implemented as classes in 
CPython.

Sanmitha's question was already discussed answered here:

https://discuss.python.org/t/enumerate-function-or-class/10504/1

--
nosy: +steven.daprano

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45154] Enumerate() function or class?

2021-09-09 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

In pure python, generators are implemented as functions.  In CPython, the only 
way to implement them is as a class.  From a user's point of view, enumerate(), 
map(), zip(), and filter() are used like a functions (they doesn't have 
non-dunder methods).  Accordingly, they don't have class markup in the docs 
even though technically they are classes.  The docs are mostly consistent in 
this regard and have opted for the presentation that tends to be the most 
helpful to users.

--
assignee: docs@python -> rhettinger
nosy: +rhettinger
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45154] Enumerate() function or class?

2021-09-09 Thread Sanmitha

New submission from Sanmitha :

I was learning about enumerate(). While learning, when I used,

>>>help(enumerate)

Help on class enumerate in module builtins:

class enumerate(object)
| enumerate(iterable, start=0)
|
| Return an enumerate object.
|
| iterable
| an object supporting iteration
|
| The enumerate object yields pairs containing a count (from start, which
| defaults to zero) and a value yielded by the iterable argument.
|
| enumerate is useful for obtaining an indexed list:
| (0, seq[0]), (1, seq[1]), (2, seq[2]), …
|
| Methods defined here:
|
| getattribute(self, name, /)

| Return getattr(self, name).
|
| iter(self, /)
| Implement iter(self).
|
| next(self, /)
| Implement next(self).
|
| reduce(…)
| Return state information for pickling.

Static methods defined here:
new(*args, **kwargs) from builtins.type
Create and return a new object. See help(type) for accurate signature.

Even when I gave as,

>>>enumerate


But, when I checked the documentation in the official website of python, 
www.python.org for enumerate()

Here : https://docs.python.org/3/library/functions.html#enumerate

It showed that enumerate() is a function which violated the information shown 
by help().

I couldn’t get whether enumerate() is a class or a function. Anyone please help 
me out of this please…

By the way, I had python 3.8.3. I even checked in python 3.6 and 3.7.10.

--
assignee: docs@python
components: Documentation
messages: 401487
nosy: Sanmitha Sadhishkumar, docs@python
priority: normal
severity: normal
status: open
title: Enumerate() function or class?
type: enhancement
versions: Python 3.10, Python 3.11, Python 3.6, Python 3.7, Python 3.8, Python 
3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com