微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

list一个函数?还是班级名称?

如何解决list一个函数?还是班级名称?

您已经知道python中使用的list()。我们使用它来创建一个列表,该列表可以是空列表,也可以是其他可迭代对象(例如元组,集合等)的列表。

请考虑以下内容

list1=list()
t=(1,2,3)
list2=list(t)

在这里的主要疑问是,名称“列表”是一个单独的名为列表的函数还是类“列表”的名称

我怀疑的原因是,创建对象的语法是:

obj_name=class_name()

我们已经创建了语法中给出的对象list1和list2

help(list)

Output : 
Help on class list in module builtins:

class list(object)
     .....
     .....
     .....
     __hash__=None

仅提供有关类列表的信息。而对于其他内置函数,例如len(),help()会给出函数的信息

help(len)

Output : 
Help on built-in function in module builtins:

len(obj,/)
     Return the number of items in a container.

因此,list()是否在这里用作类名来定义其对象?

或者是否存在单独的函数来创建名为list()的类型为“ list”的变量?

在我的问题中,更具体地说,在上面的代码中,list()是充当类名还是函数名?

如果它是内置函数,可以获取为其编写的代码吗?

预先感谢

解决方法

listbuilt-in class,作用域名称list是对list类的引用。调用list(...)会隐式调用该类的构造函数list.__init__(),该类根据可选提供的参数创建列表的新对象实例。全局范围中只有一个list变量可用-它是 class ,而不是 function

请参见以下Python REPL输出:

# the 'list' definition is a class,not a function
>>> list
<class 'list'>
>>> type(list)
<class 'type'>

# lists are actually instances of the 'list' builtin class.
>>> type(list())
<class 'list'>
>>> type([])
<class 'list'>

诸如len之类的全局范围内建的内建函数是内置函数而不是类;即它不是构造函数,并且不会初始化新的对象实例。

请参见以下Python REPL输出:

>>> type(len)
<class 'builtin_function_or_method'>

此内置函数不同于Python中声明的函数。

请参见以下Python REPL输出:

>>> def test():
...    ...
...
>>> type(test)
<class 'function'>

list的源代码是用C本机实现的,可以在GitHub存储库上找到:https://github.com/python/cpython/blob/master/Objects/listobject.c


有关内置类型的更多文档,请查看以下参考资料:

,

list是绑定到该类型的内置作用域中的名称。与大多数类型一样,list可调用以创建该类型的新实例。它期望的参数是用于填充新列表的任意可迭代值。

>>> type(list)
>>> type(list)
<class 'type'>
>>> type(list((1,2,3,)))
<class 'list'>
>>> type(list(range(3)))
<class 'list'>
,

我对上面的回答很满意。我什至奖励最合适的答案。但我什至对那个答案有些怀疑,他也回答了。我想为我的问题提供另一个答案,我想将所有这些作为答案汇总。

list() 的第一个是一个类名,更具体地说是一个类型名。它不是一个函数。我很确定。类似地,其他数据类型如 bool、int、float、complex、set、tuple、dictionary、frozenset、str 等也是类。

要验证我的观点,只需使用 help():

>>>help(list) # or any type you want

它给出了该类列表的描述。

有时我们会怀疑。如果 list() 不是函数,那么为什么它包含在 python 官方网站提供的内置函数列表中。 www.python.org

这是链接:https://docs.python.org/3/library/functions.html

这也是我提出的问题。

我的回答是。它是传统的。一旦它们是函数。在这里查看:https://docs.python.org/release/1.5/lib/node26.html#SECTION003300000000000000000

所以即使在这个版本中他们也遵循相同的做法。

希望对读者有所帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。