如何解决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()是充当类名还是函数名?
预先感谢
解决方法
list
是built-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
有关内置类型的更多文档,请查看以下参考资料:
- https://docs.python.org/3/library/functions.html#built-in-funcs
- https://docs.python.org/3/library/constants.html#built-in-consts
- JetBrains为Python标准库https://github.com/JetBrains/python-skeletons/blob/master/builtins.py 生成的框架
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 举报,一经查实,本站将立刻删除。