Hello 算法 1.0.0 Python版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.5 小结 . . . . . 如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 编号,确保每个内存空间都有唯一的内存地址。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 � 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉 及地址空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.1.0 Python版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.5 小结 . . . . . 如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素0 码力 | 364 页 | 18.42 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Python 版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.5 小结 . . . . . 如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 。有了这些地址,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则通常无法被其他程序同时使用了。因此在数 据结构与算法的设计中,内存资源是一个重要的考虑0 码力 | 364 页 | 18.43 MB | 10 月前3
Python 标准库参考指南 3.10.15 __dir__() 方法,该函数会尽量从对象的__dict__ 属性和其类型对象中收集信 息。得到的列表不一定是完整,如果对象带有自定义 __getattr__() 方法时,结果可能不准确。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: • 如果对象是模块对象,则列表包含模块的属性名称。 • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 对象: >>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1)) 另请参阅类型对象。 提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()), 相当于类定义中关键字 (除了 metaclass) 的行为方式。 另请参阅 class-customization。 在 3.6 版更改: 如果拼接bytes 对象,你可以类似地使用bytes.join() 或io.BytesIO,或者你也可以使 用bytearray 对象进行原地拼接。bytearray 对象是可变的,并且具有高效的重分配机制 • 如果拼接tuple 对象,请改为扩展list 类 • 对于其它类型,请查看相应的文档 (7) 某些序列类型 (例如range) 仅支持遵循特定模式的项序列,因此并不支持序列拼接或重复。0 码力 | 2072 页 | 10.39 MB | 9 月前3
Python 标准库参考指南 3.13 __dir__(),该函数会尽量从对象所定义的 __dict__ 属性和其类型对象中收集信 息。结果列表不一定是完整的,并且当对象具有自定义的 __getattr__() 时还可能是不准确的。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: • 如果对象是模块对象,则列表包含模块的属性名称。 • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 = 1 ... >>> X = type('X', (), dict(a=1)) 另请参阅: • 有关类的属性和方法的文档。 • 类型对象 提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()),相 当于类定义中关键字 (除了 metaclass) 的行为方式。 另请参阅 class-customization。 在 3.6 版本发生变更: 如果拼接bytes 对象,你可以类似地使用bytes.join() 或io.BytesIO,或者你也可以使 用bytearray 对象进行原地拼接。bytearray 对象是可变的,并且具有高效的重分配机制 • 如果拼接tuple 对象,请改为扩展list 类 • 对于其它类型,请查看相应的文档 (7) 某些序列类型 (例如range) 仅支持遵循特定模式的项序列,因此并不支持序列拼接或重复。0 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.13 __dir__(),该函数会尽量从对象所定义的 __dict__ 属性和其类型对象中收集信 息。结果列表不一定是完整的,并且当对象具有自定义的 __getattr__() 时还可能是不准确的。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: • 如果对象是模块对象,则列表包含模块的属性名称。 • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 = 1 ... >>> X = type('X', (), dict(a=1)) 另请参阅: • 有关类的属性和方法的文档。 • 类型对象 提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()),相 当于类定义中关键字 (除了 metaclass) 的行为方式。 另请参阅 class-customization。 在 3.6 版本发生变更: 如果拼接bytes 对象,你可以类似地使用bytes.join() 或io.BytesIO,或者你也可以使 用bytearray 对象进行原地拼接。bytearray 对象是可变的,并且具有高效的重分配机制 • 如果拼接tuple 对象,请改为扩展list 类 • 对于其它类型,请查看相应的文档 (7) 某些序列类型 (例如range) 仅支持遵循特定模式的项序列,因此并不支持序列拼接或重复。0 码力 | 2242 页 | 11.73 MB | 9 月前3
Python 标准库参考指南 3.10.15 __dir__() 方法,该函数会尽量从对象的__dict__ 属性和其类型对象中收集信息。 得到的列表不一定是完整,如果对象带有自定义 __getattr__() 方法时,结果可能不准确。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: • 如果对象是模块对象,则列表包含模块的属性名称。 • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 对象: >>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1)) 另请参阅类型对象。 提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()),相当 于类定义中关键字 (除了 metaclass) 的行为方式。 另请参阅 class-customization。 在 3.6 版更改: 如果拼接bytes 对象,你可以类似地使用bytes.join() 或io.BytesIO,或者你也可以使 用bytearray 对象进行原地拼接。bytearray 对象是可变的,并且具有高效的重分配机制 • 如果拼接tuple 对象,请改为扩展list 类 40 Chapter 4. 内置类型 The Python Library Reference, 发布 3.10.15 • 对于其它类型,请查看相应的文档0 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.8.20 __dir__(),这个函数会尝试从对象已定义的__dict__ 属性和类型对象收集信 息。结果列表并不总是完整的,如果对象有自定义 __getattr__(),那结果可能不准确。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: • 如果对象是模块对象,则列表包含模块的属性名称。 • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 None,则将使 用sys.stdout。由于要打印的参数会被转换为文本字符串,因此print() 不能用于二进制模式 的文件对象。对于这些对象,应改用 file.write(...)。 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为真值,流会被强制刷新。 在 3.3 版更改: 增加了 flush 关键字参数。 class property(fget=None, fset=None 对象: >>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1)) 另请参阅类型对象。 提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()), 相当于类定义中关键字 (除了 metaclass) 的行为方式。 另请参阅 class-customization。 在 3.6 版更改:0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 __dir__(),这个函数会尝试从对象已定义的__dict__ 属性和类型对象收集信 息。结果列表并不总是完整的,如果对象有自定义 __getattr__(),那结果可能不准确。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: • 如果对象是模块对象,则列表包含模块的属性名称。 • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 None,则将使 用sys.stdout。由于要打印的参数会被转换为文本字符串,因此print() 不能用于二进制模式 的文件对象。对于这些对象,应改用 file.write(...)。 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为真值,流会被强制刷新。 在 3.3 版更改: 增加了 flush 关键字参数。 class property(fget=None, fset=None 对象: >>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1)) 另请参阅类型对象。 提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()), 相当于类定义中关键字 (除了 metaclass) 的行为方式。 另请参阅 class-customization。 在 3.6 版更改:0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 __dir__(),这个函数会尝试从对象已定义的__dict__ 属性和类型对象收集信息。 结果列表并不总是完整的,如果对象有自定义 __getattr__(),那结果可能不准确。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: • 如果对象是模块对象,则列表包含模块的属性名称。 • 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 None,则将使用sys. stdout。由于要打印的参数会被转换为文本字符串,因此print() 不能用于二进制模式的文件对象。 对于这些对象,应改用 file.write(...)。 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为真值,流会被强制刷新。 在 3.3 版更改: 增加了 flush 关键字参数。 class property(fget=None, fset=None 对象: >>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1)) 另请参阅类型对象。 提供给三参数形式的关键字参数会被传递给适当的元类机制 (通常为 __init_subclass__()),相当 于类定义中关键字 (除了 metaclass) 的行为方式。 另请参阅 class-customization。 在 3.6 版更改:0 码力 | 2052 页 | 9.74 MB | 9 月前3
共 125 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13













