Python 生成器 装饰器 闭包 迭代器 元类 gil log 协程 垃圾回收 描述符 property

news/2025/2/12 20:51:40/

迭代器和生成器

在 Python 中,迭代器(Iterator)是一种通过循环访问数据集合的方式,可以逐个访问集合中的元素,而不需要提前将整个集合加载到内存中。Python 中的迭代器通常是基于可迭代对象(Iterable)来实现的,例如列表、元组、字典、字符串等。

生成器(Generator)是一种特殊的迭代器,可以在每次循环中动态地生成数据,而不是一次性生成所有数据。生成器非常适合处理大量数据,因为它们只在必要时才计算并生成需要的数据,而不是一次性生成所有数据占用大量内存。

它们之间的区别在于,迭代器是一种通过定义类来实现的,必须实现 __iter__()__next__() 两个方法,每个方法的含义、用法和返回值在实现时都需要考虑到所有细节。而生成器则比较简单,可以通过关键字 yield 来生成数据,每次调用生成器时会自动从上一个 yield 语句处继续执行,直到生成器结束或者遇到 return 语句。在 Python 中,生成器通常通过函数来定义,例如:

def my_generator(num):for i in range(num):yield i

该生成器函数用于生成 0num - 1 的整数,可以通过 for 循环来访问生成器中的元素,例如:

 
for item in my_generator(10):print(item)

这里的 my_generator(10) 返回一个生成器对象,它会动态地生成 09 的整数,循环直到生成器结束或者遇到 return 语句。


http://www.ppmy.cn/news/388596.html

相关文章

D3D学习笔记1-D3D9设备的初始化

目录 创建D3D设备 IDirect3DDevice9 * 绘制框架 创建D3D设备 IDirect3DDevice9 * D3D9设备的初始化步骤: 1.创建IDirect3D9对象 2.检查硬件 3.填充D3DPRESENT_PARAMETERS结构体 4.创建D3D设备 bool InitD3D(HWND hwnd, bool isFullScreen, D3DDEVTYPE deviceType, IDi…

Direct3DCreate9()

功能: Creates an instance of an IDirect3D9 object. 原型: IDirect3D9 *WINAPI Direct3DCreate9( UINT SDKVersion ); 参数: SDKVersion The value of this parameter should be D3D_SDK_VERSION. See Remarks. 返回值: …

Direct3D的初始化

(1)获取接口IDirect3D9的指针,该接口用于获取系统中物理硬件设备的信息并创建接口IDirect3DDevice9,该接口是一个C对象,代表了我们用来显示3D图形的物理硬件设备。 使用Direct3DCreate9可获得该指针,它的参数必须是D3D_SDK_VERSIO…

禁止显示状态 错误 LNK2019 无法解析的外部符号 _Direct3DCreate9@4,该符号在函数 long __cdecl InitD3D(struct

82/100 发布文章 [TOC](LNK2019 无法解析的外部符号 _Direct3DCreate94,该符号在函数 "long __cdecl InitD3D(struct) 错误原因: 因为我是在开发Directx 3D程序,所以这个错误的原因是没有lib库。可是我明明在vc目录中添加了SDK的头文件…

Direct3D效果框架

一、概述 一种绘制效果通常由以下几部分构成:一个顶点着色器、一个像素着色器、一个需要设置的设备状态列表、一条或多条绘制路径。我们希望采用一种低效运行机制针对不同级别的图形硬件的绘制效果(即,在现有硬件条件下,物尽其用&…

Direct3D中的纹理映射

一、概要 为了使渲染的图形看起来更真实,Direct3D提供了在物体表面绘制纹理的功能。一般来说,纹理是表示物体表面细节的一幅或几幅二维图形,也称纹理贴图。借助纹理映射技术,我们可将图像数据映射到三角形单元中,这种功…

Direct3D中的光照

一、概述 为了增强所绘制场景的真实感,我们可以为场景增加光照。光照也有助于描述实体形状和立体感。使用光照时,我们无需自行指定顶点的颜色值:Direct3D会将顶点送入光照计算引擎,依据光源类型、材质以及物体表面相对于光源的朝向…

Direct3D初始化例程

看过Direct3D初始化之后,我们来总体的串一下,搞出个示例,方便学习。 我们现在要做的就是实现Direct3D的初始化,并将背景设置为红色。 在下面的例子中,我们使用了d3dUtility.h/cpp,这两个文件中就是实现每…