Python中内置了很多非常有用的对象,本文将会介绍Python中的内置函数,内置常量,内置类型和内置异常。
Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。
内置函数 | ||||
---|---|---|---|---|
abs() | delattr() | hash() | memoryview() | set() |
all() | dict() | help() | min() | setattr() |
any() | dir() | hex() | next() | slice() |
ascii() | divmod() | id() | object() | sorted() |
bin() | enumerate() | input() | oct() | staticmethod() |
bool() | eval() | int() | open() | str() |
breakpoint() | exec() | isinstance() | ord() | sum() |
bytearray() | filter() | issubclass() | pow() | super() |
bytes() | float() | iter() | print() | tuple() |
callable() | format() | len() | property() | type() |
chr() | frozenset() | list() | range() | vars() |
classmethod() | getattr() | locals() | repr() | zip() |
compile() | globals() | map() | reversed() | __import__() |
complex() | hasattr() | max() | round() |
Python中内置了少量的常量,我们可以直接在代码中使用他们。
表示的是bool类型的假值。
表示的是bool类型的真值。
是NoneType类型的唯一值。None表示缺少值。
是__eq__()
, __lt__()
, __add__()
, __rsub__()
的特殊返回值,表示会在假值的时候返回NotImplemented。
等同于字面值 …
,主要与用户定义的容器数据类型的扩展切片语法结合使用。
__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:
if x is false, then y, else x
严格小于
具有不同标识的类的实例比较结果通常为不相等,除非类定义了 __eq__()
方法。
Python中有三种不同的数据类型:整数, 浮点数 和 复数。
所有数字类型(复数除外)都支持下列运算:
x 和 y 的和
对于int 和 float 还支持下面的运算:
x 截断为 Integral
对于整数来说,还支持位运算:
x 和 y 按位 或
int 还有一些额外的方法:
int.bit_length
()
返回以二进制表示一个整数所需要的位数,不包括符号位和前面的零:
>>> n = -37
>>> bin(n)
'-0b100101'
>>> n.bit_length()
6
int.to_bytes
(length, byteorder, *, signed=False)
返回表示一个整数的字节数组。
(1024).to_bytes(2, byteorder='big')
b'\x04\x00'
(1024).to_bytes(10, byteorder='big')
b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'
(-1024).to_bytes(10, byteorder='big', signed=True)
b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
x = 1000
x.to_bytes((x.bit_length() + 7) // 8, byteorder='little')
b'\xe8\x03'
byteorder 参数确定用于表示整数的字节顺序。如果 byteorder 为 "big"
,则最高位字节放在字节数组的开头。如果 byteorder 为 "little"
,则最高位字节放在字节数组的末尾。
signed 参数确定是否使用二的补码来表示整数。
float.is_integer
()
如果 float 实例可用有限位整数表示则返回 True
,否则返回 False
:
>>> (-2.0).is_integer()
True
>>> (3.2).is_integer()
False
float.hex
()
以十六进制字符串的形式返回一个浮点数表示。
迭代器主要用在容器的遍历中。
如果容器需要提供迭代支持,必须定义下面的方法:
container.__iter__
()
这个方法返回一个迭代器对象。这个迭代器对象需要提供下面的两个方法:
iterator.__iter__
()
返回迭代器对象本身。
iterator.__next__
()
从容器中返回下一项。
有三种基本序列类型:list, tuple 和 range 对象。
下面是通用的序列操作:
如果 s 中的某项等于 x 则结果为 True,否则为 False
可变序列类型的操作:
将 s 的第 i 项替换为 x
序列类型包括列表,元组,range对象和文本序列str。
这里重点看下str的方法:
返回原字符串的副本,其首个字符大写,其余为小写。
还包括几个二进制序列类型: bytes
, bytearray
, memoryview
。
bytes 对象是由单个字节构成的不可变序列。
表示 bytes 字面值的语法与字符串字面值的大致相同,只是添加了一个 b
前缀。
bytearray 对象是 bytes
对象的可变对应物。bytearray 对象没有专属的字面值语法,它们总是通过调用构造器来创建。
我们看下bytes和bytearray的基本操作:
返回子序列 sub 在 [start, end] 范围内非重叠出现的次数。可选参数 start 与 end 会被解读为切片表示法。
memoryview 对象允许 Python 代码访问一个对象的内部数据,只要该对象支持 缓冲区协议 而无需进行拷贝。
obj 必须支持缓冲区协议。支持缓冲区协议的内置对象包括 bytes 和 bytearray。
集合中存放的是不重复的数据。主要有set 和 frozenset两种。
set 类型是可变的 — 其内容可以使用 add() 和 remove() 这样的方法来改变。由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。
frozenset 类型是不可变并且为 hashable — 其内容在被创建后不能再改变;因此它可以被用作字典的键或其他集合的元素。
看下集合的基本操作:
返回集合 s
中的元素数量(即 s
的基数)。
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)
如果没有给出位置参数,将创建一个空字典。
字典的操作:
返回字典 d 中使用的所有键的列表。
由 dict.keys(), dict.values() 和 dict.items() 所返回的对象是 视图对象。该对象提供字典条目的一个动态视图,这意味着当字典改变时,视图也会相应改变。
字典视图可以被迭代以产生与其对应的数据,并支持成员检测:
返回字典中的条目数。
Python中所有的异常都来自BaseException ,我们看下内置异常的层级结构:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
+-- ImportError
| +-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- OSError
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
| +-- RecursionError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning