所有我都是python编程的新手。我在python中引用了不同的教程,很少有作者说在python中像Numbers(int,float,complex),list,set,tuple,dictionary,string是数据类型,一些主题说数据-structure很少说class.i我很困惑这是正确的。
我正在写一篇关于Python的文章并在一个随机网站上发现这个声明,只是想知道是否有人可以澄清并证明你的答案。
答案 0 :(得分:3)
确切含义随着时间的推移略有变化。最新版本的python(python 3)是最简单和最一致的,所以我将用它来解释。
让我们从有两种观点开始:价值观和价值观的类型。
python中的值可以是,例如,数字,列表,甚至是函数。
值的类型描述了这些。所以数字的类型可能是int
,例如。
type()
函数会说(在python 3中)你的类实例的类型是类本身:
所以也许您定义了一个名为MyFoo的类:
>>> class MyFoo:
>>> def __init__(self, a):
>>> self.a = a
>>>
>>> foo = MyFoo(1)
>>> type(foo)
<class '__main__.MyFoo'>
将其与整数进行比较:
>>> type(1)
<class 'int'>
很明显,你的价值类型就是它的类别。
因此python中的值(例如数字,列表甚至函数)都是类的实例。值的类型是描述其行为方式的类。
现在事情变得更复杂,因为你也可以为一个值分配一个类型!那么你有一个类型的值:
>>> x = type(1)
>>> type(x)
<class 'type'>
事实证明,任何类型的类型都是type
。这意味着任何类本身都是一个实例(type
)。这有点奇怪。但它是一致的,而不是你需要担心的事情。
总而言之,对于python 3(这是最简单的):
type
!最后,尝试回答您的确切问题。有些人调用类数据类型和实例数据结构(我认为)。这是混乱和混乱,人们不是很小心。最简单的方法就是坚持使用类和类型(实际上是同样的东西)和实例。
答案 1 :(得分:2)
“数据类型”是对某种数据的描述:哪种类型的值可以是这种类型的实例,以及可以对它们执行何种操作。
“类”是表示数据类型的一种方式(尽管不是唯一的方法),将类型上的操作视为类型实例上的“方法”(称为“对象”)。这是所有基于类的语言的通用术语。但是Python对“类”也有一个特定的含义:由class
语句定义的东西,或者在满足特定要求的内置/扩展代码中定义的东西,都是一个类。
因此,任意大小的整数和映射字典都是数据类型。在Python中,它们由内置类int
和dict
表示。
“数据结构”是一种组织数据以便高效或轻松访问的方法。这与数据类型无直接关系。在许多语言(如C ++或Java)中,定义一个新类需要您告诉编译器实例的成员如何在内存中布局,以及类似的事情,但在Python中您只需构造对象并向其添加成员和解释器弄清楚如何组织它们。 (当您构建扩展模块或使用ctypes
构建包装类时会出现异常,但不要担心。)
当您进入更高级别的抽象数据结构(如基于指针的节点)和更低级别的抽象数据类型(如保留顺序的元素集合,可以在头部进行常量时间插入和删除)时,事情变得模糊)。链表是一种本质上需要某种数据结构的数据类型,还是一种定义明显数据类型的数据结构,或者是什么?好吧,除非你在大学攻读计算机科学专业,否则只要你理解了这个问题,答案就不会有太大的影响。
因此,映射字典是数据类型,但它们也是抽象数据结构 - 并且,在封面下,Python的dict
对象是从特定的具体数据结构构建的(具有二次探测的开放链式哈希表) )它仍然是部分抽象的(每个桶包含一个鸭型值)。
答案 2 :(得分:1)
条款&#34;数据类型&#34;和&#34;班&#34;在Python中是同义词,它们对于您给出的示例都是正确的。与其他一些语言不同,没有简单的类型,Python中的所有内容(可以指向变量)都是一个对象。术语&#34;数据结构&#34;另一方面,应该保留容器类型,例如集合,元组,字典或列表。