[译]Python 语言参考-3.2. 标准类型层次(上)

说明:本系列文章翻译自 Python 3.5.0 官方文档Python 语言参考

下面是一个 Python内建类型的列表。扩展模块(使用 C, Java 或其他语言,根据执行情况)可以定义额外的类型。未来的 Python 版本可能会在类型层次上添加新类型(例如:有理数,高效存储的整型数组,等),通常会以 Python 标准库的形式提供。

有写类型的描述会包含一段“特殊属性”的列表。这些都是提供访问实现的属性,而不作为一般用途。将来它们的定义可能会改变。

None

此类型只有一个值。只有一个对象拥有此值,这个对象可以通过内建的名称None访问。多数情况下,它标识一个不存在的值,例如:当一个函数不明确返回任何值时,可以返回None。它的逻辑值是假。

NotImplemented

此类型只有一个值。只有一个对象拥有此值,这个对象可以通过内建的名称NotImplemented访问。数值型方法和富比较方法如果不实现运算对象提供的运算应该返回此值。(解释器会基于操作符尝试反射运算,或退却[译者注:计算机用语,计算机在发生故障时,即使系统的一部分功能降低但仍能保持主要功能])。它的逻辑值是真。

详细信息请查看算术运算符实现

省略号(Ellipsis)

此类型只有一个值。只有一个对象拥有此值,这个对象可以通过...或内建名称Ellipsis访问。它的逻辑值为真。

numbers.Number

它们由数值型的字面值船舰,并以算术运算符和内置算术函数作为返回结果。数值型对象是不可变的;一旦被创建,它们的值就不会改变。Python 的数字和数学上的数字是强相关,但受限于计算机的呈现能力。

Python 有整数,浮点数和复数三种数字类型

numbers.Integral

代表数学集合中的整数(包括整数和负数)

有两种整数类型:

整型(int)

整型表示无限大小的数字,仅受限于可用的(虚拟)内存。为了移位和掩码操作,我们假设负数使用二进制补码的变种(一串无穷的左边带符号扩展)表示。

布尔型(bool)

布尔型表示值的真假。只有值为TrueFalse的对象才是布尔型。布尔型是整型的了类型,它的值的行为类似于01,例外情况是,在几乎所有的上下文环境中,当把布尔型对象转化为字符串时,会对应的返回FalseTrue

整型表示的原则是,给予移位和掩码操作(包括负数)最有意义的解释。

numbers.Real(float)

代表机器层双精度浮点数。此值受基础机器结构(和 C 或 Java 的实现)可接受范围和溢出处理的约束。Python 不支持单精度浮点数;单精度在进程和内存使用上节省的空间被在 Python 中使用对象的开支抵消,所以没有理由使用两种精度让 Python 变的复杂化。

numbers.Complex(complex)

复数使用一对机器层双精度浮点数表示,与浮点数的说明一致。复数z的实数和虚数部分可以通过z的两个只读属性z.realz.imag访问。

序列(Sequences)

序列表示使用非负整数做为索引的有序集合。 内建函数len()返回一个序列的元素个数。如果一个序列的长度是n,它的索引包含0, 1, ..., n-1。序列a的第i个元素使用a[i]来获取。

序列支持切片:如果索引用k表示,那么a[i:j]得到所有满足i <= k < j的元素。当用在表达式中时,切片也是一个同类型的序列。这意味着索引会从0开始重新编号。

一些序列通过第三个“步”参数支持“扩展切片”:如果索引用x表示,a[i:j:k]得到所有满足x = i + n*k, n >= 0i <= x < j的所有元素。

序列通过可变性区分:

不可变序列

一个不可变的序列类型对象一旦被创建就不能改变。(如果包含其他对象的引用,这些对象可能是可变的并且可能会发生变化;然而,不变对象对这些对象的直接引用是不能改变的。[译者注:看来作者也认为这是个难点啊,文中反复强调这点~~[戳这里看3.1章中的讲解](http://www.jianshu.com/p/4e77bedc546e)有译者的例子哦])

以下的类型都是不可变序列:

字符串

字符串代表一序列的 Unicode 码位的值。所有在U+0000~U+10FFFF的码位都可以表示字符串。Python 没有char类型;在字符串中每一个码位都代表一个长度为1的字符串。内建函数ord()将字符串中的每个码位转换成整型,取值范围为0~10FFFFchr()一个取值范围为0~10FFFF的整型转换成长度为1的字符串。str.encode()使用指定编码将一个str转换成bytesbytes.decode()可以实现相反操作。

元组

元组中的元素可以是 Python 中的任意对象。两个以上元素的元组由逗号分隔的表达式(expression,译者注:之所以使用这个词是因为同一个元组中可以存放各种类型的数据,下同)列表组成。一个元素的元组由一个表达式后跟一个逗号组成(单独的一个表达式不能创建一个元组,因为圆括号必须用来组合表达式)。一个空的元组可以用一对圆括号表示。

位元组

位元组对象是一个不可变数组。它的元素占8位字节,用0 <= x < 256范围内的整数表示。位元组字面值(比如:b'abc')和内建函数bytes()可以用来创建位元组对象。位元组对象也可以通过decode()方法解码成字符串。

可变序列

可变序列在被创建后可以改变。下标和切片标记可以被用于分配的目标和del(delete)语句。

存在两个固有的可以序列类型:

列表

列表的元素是任意的 Python 对象。列表由在方括号内用逗号分隔的表达式组成。(0个和1个元素的列表不需要特殊操作。)

字节数组

字节数组是一个可变数组。通过内建函数bytearray()构造器创建。除了是一个可变类型,字节数组另外提供了和不可变位元组对象相同的接口和函数,也因此,字节数组类型具的不可哈希性。

collections模块一样,扩展的array模块提供了附加的可变序列类型的例子.

集合类型

表示无序的,元素唯一的不可变有限集合对象。它们不能使用下标索引。然而,它们可以被迭代,内建函数len()返回集合中的元素个数。集合常被用来全员测试,去重和数学上操作符运算(比如交集,并集,差分,对称差分)。

集合中的元素和字典的键遵守一样的不可变性规则。需要注意,数字类型遵守数字比较的通用规则:两个数字比较结果是相等(比如:11.0),它们中有一个会在集合中保留。

集合有两种固有的类型:

集(Sets)

一个可变集合。通过内建函数set()构造器创建,可以通过一些方法,例如add(),改变它。

冻结集(Frozen sets)

一个不可变集合。通过内建函数frozenset()构造器创建。由于它的不可变性和可哈希性,它可以被用作另一个集合的元素,或字典的键。

映射(Mapping)

表示被任意索引集合索引的有限对象集合。下标a[k]获取到映射a中被k索引的元素;可以用在表达式中,分配给目标或者del语句。内建函数len()返回该映射的元素个数。

映射中只有一种类型:

字典

字典表示被几乎任意值索引的有限对象集合。只有一种类型的值不能作为字典的键:包含列表,字典或其他可变类型的,比较值而不是比较对象身份标识的类型。因为字典的高效要求键的哈希值始终不变。数字类型作为键时遵守普通的数字比较规则:如果两个数字的比较结果是相等(比如:11.0),那么它们都可作为同一个字典内容的索引。

字典是可变的;他们可以通过...符号创建(参考字典显示章节)。

collections模块一样,dbm.ndbmdbm.gnu扩展模块提供了映射类型附加的例子。

请继续阅读:[译]Python 语言参考-3.2. 标准类型层次(下)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容