做过WindowsPhone,写过Android,负责过跨平台App开发,最近精力在机器学习,研究Python中……
# 7.1. 散列表 散列表的基本思想,是通过一定的函数将需搜索的键值映射为一个整数,将这个整数视为索引值去访问某片连续的内存区域。理论上,在最优情况下,散列表能提供O(1)复杂度的搜索效率。 用于映射的函数称为散列函数(hash function),而映射后的值称为元素的散列值(hash value)。在散列表的实现中,所选择的散列函数的优劣将直接决定所实现的散列表的搜索效率的高低。
# 6.1. List对象 List对象是“变长对象”。 ## 6.1.1. Python中的创建 Python中List对象最重要的创建方法为PyList_New,如下Python语句最终会调用到PyList_New: ``` python test = [1, 2, 3, 4, 5] ``` ## 6.1.2. PyList_New的C调用栈 ``` // p
# 5.1. 字符串对象 字符串对象是“变长对象”。 ## 5.1.1. Python中的创建 Python中字符串(strs)对象最重要的创建方法为PyUnicode_DecodeUTF8Stateful,如下Python语句最终会调用到PyUnicode_DecodeUTF8Stateful: ``` python a = 'hello b = str('world')
# 0.1. 整体架构 在最高的层次上,Python的整体架构可以分为三个主要的部分: * 左:Python提供的大量的模块、库以及用户自定义的模块; * 右:Python的运行时环境,包括对象/类型系统(Object/Type structures)、内存分配器(Memory Allocator)和运行时状态信息(Current State of Python); * 中:Python的
# 4.1. 字符串对象 字符串对象是“变长对象”。 ## 4.1.1. Python中的创建 Python中字符串(bytes)对象创建最重要的方法为PyBytes_FromStringAndSize,如下Python语句最终会调用到PyBytes_FromStringAndSize: ``` python a = b'hello' b = str(b'world') ``
# 3.1. 整数对象 整数对象是“变长对象”。 ## 3.1.1. Python中的创建 Python中整数对象最重要的创建方法为PyLong_FromLong,如下Python语句最终会调用到PyLong_FromLong: ``` python a = 1 b = int(1) ``` ## 3.1.2. PyLong_FromLong的C调用栈 词法解析,最终
# 2.1. 浮点对象 浮点对象是“定长对象”。 ## 2.1.1. Python中的创建 Python中浮点对象创建最重要的方法为PyFloat_FromDouble,如下Python语句最终会调用到PyFloat_FromDouble: ``` python a = 1.23 b = float(1.234) ``` ## 2.1.2. PyFloat_FromDo
# 8.1. Python程序的执行过程 Python解释器在执行任何一个Python程序文件时,首先进行的动作都是先对文件中的Python源代码进行编译,编译的主要结果是产生一组Python的byte code(字节码),然后将编译的结果交给Python的虚拟机(Virtual Machine),由虚拟机按照顺序一条一条地执行字节码,从而完成对Python程序的执行动作。 对于Pytho
# 1.1. Python内的对象 Python中的类和实例都是通过Python内的对象来实现的。Python中已经预先定义了一些类型对象。这些内建类型对象通过实例化,可以创建内建类型对象的实例对象。 在Python中,对象就是为C中的结构体在堆上申请的一块内存,一般来说,对象是不能被静态初始化的,并且也不能在栈空间上生存。唯一的例外就是类型对象,Python中所有的内建的类型对象都是被静