Python 基础之:Python 中的内部对象
简介
Python 中内置了很多非常有用的对象,本文将会介绍 Python 中的内置函数,内置常量,内置类型和内置异常。
内置函数
Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。
内置常量
Python 中内置了少量的常量,我们可以直接在代码中使用他们。
False
表示的是 bool 类型的假值。
True
表示的是 bool 类型的真值。
None
是 NoneType 类型的唯一值。None 表示缺少值。
NotImplemented
是__eq__()
, __lt__()
, __add__()
, __rsub__()
的特殊返回值,表示会在假值的时候返回 NotImplemented。
Ellipsis
等同于字面值 …
,主要与用户定义的容器数据类型的扩展切片语法结合使用。
__debug__
编译器内部的变量,用来表示是否开启 debug 模式。
内置类型
python 中的主要内置类型有数字、序列、映射、类、实例和异常。
逻辑值检测
在 python 中,任何对象都可以做逻辑值的检测。
一个对象在默认情况下均被视为真值,除非当该对象被调用时其所属类定义了 __bool__()
方法且返回 False
或是定义了 __len__()
方法且返回零。
下面是集中被认为是 false 值的对象:
被定义为假值的常量:
None
和False
。任何数值类型的零:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
空的序列和多项集:
''
,()
,[]
,{}
,set()
,range(0)
逻辑值的布尔运算
布尔运算主要有 or, not 和 and:
比较运算
具有不同标识的类的实例比较结果通常为不相等,除非类定义了 __eq__()
方法。
数字类型
Python 中有三种不同的数据类型:整数, 浮点数 和 复数。
所有数字类型(复数除外)都支持下列运算:
对于 int 和 float 还支持下面的运算:
整数类型的位运算
对于整数来说,还支持位运算:
整数类型的附加方法
int 还有一些额外的方法:
int.bit_length
()
返回以二进制表示一个整数所需要的位数,不包括符号位和前面的零:
int.to_bytes
(length, byteorder, *, signed=False)
返回表示一个整数的字节数组。
byteorder 参数确定用于表示整数的字节顺序。 如果 byteorder 为 "big"
,则最高位字节放在字节数组的开头。 如果 byteorder 为 "little"
,则最高位字节放在字节数组的末尾。
signed 参数确定是否使用二的补码来表示整数。
浮点类型的附加方法
float.is_integer
()
如果 float 实例可用有限位整数表示则返回 True
,否则返回 False
:
float.hex
()
以十六进制字符串的形式返回一个浮点数表示。
迭代器
迭代器主要用在容器的遍历中。
如果容器需要提供迭代支持,必须定义下面的方法:
container.__iter__
()
这个方法返回一个迭代器对象。这个迭代器对象需要提供下面的两个方法:
iterator.__iter__
()
返回迭代器对象本身。
iterator.__next__
()
从容器中返回下一项。
序列类型
有三种基本序列类型:list, tuple 和 range 对象。
下面是通用的序列操作:
可变序列类型的操作:
序列类型包括列表,元组,range 对象和文本序列 str。
这里重点看下 str 的方法:
还包括几个二进制序列类型: bytes
, bytearray
, memoryview
。
bytes 对象是由单个字节构成的不可变序列。
表示 bytes 字面值的语法与字符串字面值的大致相同,只是添加了一个 b
前缀。
bytearray 对象是 bytes
对象的可变对应物。bytearray 对象没有专属的字面值语法,它们总是通过调用构造器来创建。
我们看下 bytes 和 bytearray 的基本操作:
memoryview 对象允许 Python 代码访问一个对象的内部数据,只要该对象支持 缓冲区协议 而无需进行拷贝。
obj 必须支持缓冲区协议。 支持缓冲区协议的内置对象包括 bytes 和 bytearray。
集合类型
集合中存放的是不重复的数据。主要有 set 和 frozenset 两种。
set 类型是可变的 — 其内容可以使用 add() 和 remove() 这样的方法来改变。 由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。
frozenset 类型是不可变并且为 hashable — 其内容在被创建后不能再改变;因此它可以被用作字典的键或其他集合的元素。
看下集合的基本操作:
映射类型
python 中的映射类型是 dict。只要是 hashable 的对象都可以作为 dict 的 key。
字典可用多种方式来创建:
使用花括号内以逗号分隔
键: 值
对的方式:{'jack': 4098, 'sjoerd': 4127}
or{4098: 'jack', 4127: 'sjoerd'}
使用字典推导式:
{}
,{x: x ** 2 for x in range(10)}
使用类型构造器:
dict()
,dict([('foo', 100), ('bar', 200)])
,dict(foo=100, bar=200)
如果没有给出位置参数,将创建一个空字典。
字典的操作:
字典视图对象
由 dict.keys(), dict.values() 和 dict.items() 所返回的对象是 视图对象。 该对象提供字典条目的一个动态视图,这意味着当字典改变时,视图也会相应改变。
字典视图可以被迭代以产生与其对应的数据,并支持成员检测:
内置异常
Python 中所有的异常都来自 BaseException ,我们看下内置异常的层级结构:
本文已收录于 http://www.flydean.com/11-python-inner-obj/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
版权声明: 本文为 InfoQ 作者【程序那些事】的原创文章。
原文链接:【http://xie.infoq.cn/article/d6a5ed74b506c1f0311a205c5】。文章转载请联系作者。
评论