【问题标题】:Enumerate() function or class?Enumerate() 函数或类?
【发布时间】:2021-09-09 14:12:47
【问题描述】:

我正在学习 enumerate()。一边学习,一边使用,

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.

即使我给了,

enumerate
<class ‘enumerate’>

但是,当我查看python官网的文档时,www.python.orgenumerate()

这表明 enumerate() 是一个违反 help() 显示信息的函数。

我不知道 enumerate() 是一个类还是一个函数。请任何人帮助我解决这个问题...

顺便说一句,我有 python 3.8.3。我什至签入了 python 3.6 和 3.7.10。

【问题讨论】:

标签: python function class


【解决方案1】:

关于 Python 的一个值得注意的事情是,通过实例化类和调用函数来创建对象并没有不同的语法。 实际上,在幕后,在正确的抽象层上,这两件事所做的就是在用于传递参数的(...) 之前的对象上运行__call__ 方法。

无论如何,“枚举”调用必须返回一个能够被迭代的对象,以便它可以在for 循环构造中使用。

从技术上讲,您看到“枚举是一个函数”的文档是不正确的 - 您甚至可以为它提交一个错误,表明它应该指示它是一个类。在实践中,当为该语言的初学者编写文档和教程时,他们几乎不会知道“enumerate”、“range”、“bool”之类的东西本身就是类,而其他诸如“open”之类的调用, "iter" 是返回它们实例化的对象的函数。

【讨论】:

  • 我提交了一个错误,他们关闭了它....bugs.python.org/issue45154
  • 您没有在文档的哪个部分发布您看到的描述 - 如果它在@SorousHBakhtiary 的答案中指出的页面中,那不是错误的,您只是误解了它。
【解决方案2】:

enumerate是python中的一个类,它返回一个枚举对象。

print(enumerate)  --> <class 'enumerate'>

如果它是一个函数,您会看到类似 &lt;built-in function enumerate&gt; 的内容。

您可能看到了 this page ,它的标题为“内置函数”,您认为它可能是一个函数。不,这不对。在该列表中,列出了函数(如 abs、...)和类/类型(如 int、...)。

Python 解释器内置了许多函数和类型 它始终可用。它们在此处按字母顺序列出 顺序。

python 中的每个类都是类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2020-04-29
    • 2015-03-28
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2021-04-03
    相关资源
    最近更新 更多