Python对象类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python对象类型相关的知识,希望对你有一定的参考价值。

Python程序可以分解为模块、语句、表达式以及对象,如下所示:

程序由模块构成

模块包含语句

语句包含表达式

表达式建立并出口对象

一、Python类型的介绍:

1.1 为什么使用内置类型

Python提供了强大的对象类型作为语言的组成部分,事实上,除非有内置类型无法提供的特殊对象要处理,最好总是使用内置对象而不是使用自己的实现。下面是其原因:

内置对象使程序更容易编写:

       对于简单的任务,内置类型往往能够表现问题领域的所有结构。例如,集合(列表)和搜索表(字典)可以马上使用它们,仅使用python内置对象类型就能完成很多工作。

内置对象使扩展的组建:

      对于较为复杂的任务,或许仍需要提供自己的对象,使用python的类或C语言的结构。例如,堆栈数据结构也许会实现为管理和定制内置列表的类。

内置对象往往比定制的数据结构更有效率:

    在速度方面,python内置类型优化了用C实现数据结构算法。尽管可以实现属于自己的类似的数据类型,但往往很难达到内置数据类型所提供的性能水平。

内置对象是语言的标准的一部分:

    python不但借鉴了依靠内置工具的语言(例如LISP),而且吸取了那些依靠程序员去提供自己实现的工具或框架的语言(例如C++)的优点。尽管在Python中可以实现独一无二的对象类型,但在开始阶段并没有必要这样做。此外,因为Python的内置工具是标准的,他们一般都是一致的。

1.2 Python的核心数据类型

python的内置对象类型和一些编写其常量(literal)所使用到的语法,也就是能够生成这些对象的表达式。

内置对象:

数字、字符串、列表、字典、元组、文件、集合、其他类型、编程单元类型、与实现相关的类型

上面所列内容并不完整,因为在python程序中处理的每样东西都是一种对象。例如,在python中进行文本模式匹配时,创建了模式对象,还有进行网络脚本编程时,使用了套接字对象,它们由def、class、import和lamba这样的语句和表达式创建,并且可以在脚本间自由地传递,存储在其他对象中等。

1.3数字

python的核心对象集合包括常规的类型:整数、浮点数以及更为少见的类型(有虚部的复数、固定精度的十进制数、带分子和分母的有理分数以及集合等)。

python的基本数字类型还是相当基本的。python中数字支持一般的数学运算。其中**表示乘方。

>>> 12+33
45
>>> 1.5*4
6.0
>>> 2 ** 100
1267650600228229401496703205376

#注意这里的最后一个记过:当需要的时候,python 3.0的整数类型会自动提供额外的精度,以用于较大的数值。
1.4 字符串

就像任意字符的集合一样,字符串是用来记录文本信息的。从严格意义上来说,字符串是单个字符的字符串的序列,其他类型的序列还包括列表和元组。

作为序列,字符串支持假设其中各个元素包含位置顺序的操作。例如,如果我们有四个字符的字符串,我们通过内置的len函数验证其长度并索引操作得到其各个元素。

>>> S = Spam
>>> len(S)
4
>>> S[0]
S
>>> S[1]
p

在Python中,索引是按照最前面的偏移量进行编码的,也就是从0开始,第一项索引为0,第二项索引为1,以此类推。

>>> S[-1]
m
>>> S[-2]
a
>>>

#在Python中,我们能够反向索引,从最后一个开始(反向索引是从左边开始计算,反向索引是从右边开始计算)

>>> S[len(S)-1]
m

#一般来说,负的索引号会简单地与字符串的长度相加,因此,上面操作和S[-1]是等效的。

>>> S[1:3]
pa

#除了简单的从位置进行索引,序列也支持一种所谓分片(slice)的操作,这是一种一步就能够提取整个分片(splice)的方法。

>>> S[1:]
pam
>>> S[0:3]
Spa
>>> S[:3]
Spa
>>> S[:-1]
Spa
>>> S[:]
Spam

#在一个分片中,左边界默认为0,并且右边界默认为分片序列的长度。

>>> S+xyz
Spamxyz
>>> S*8
SpamSpamSpamSpamSpamSpamSpamSpam

#作为一个序列,字符串也支持使用加号进行合并(将两个字符串合成为一个新的字符串),或者重复(通过再重复一次创建一个新的字符串)。
#注意加号(+)对于不同的对象有不同的意义:对于数字为加法,对于字符串为合并。这是Python的一般特性,也就是我们将会在本书后面提到的多态。简而言之,一个操作的意义取决于被操作的对象。Python编写的操作通常自动地适用于不同类型的对象。

 



以上是关于Python对象类型的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

从 TypeScript 类型定义或 GraphQL 片段定义生成 JavaScript 空对象

python之模块和包

在python 3.6中处理自定义编码时遇到类型错误

Python学习总结

python python中的漂亮(或漂亮打印)JSON对象具有这一功能。在尝试了解什么时,我总是使用这个片段