day17迭代器_可迭代对象_生成器函数

day17

1.今日内容

  • 迭代器

  • 生成器

  • 装饰器

  • 项目结构

  • logging模块

2.内容回顾&作业

2.1内容回顾

2.1.1函数

  • 基本函数结构

     

    • 参数

    • 返回值

    • 执行函数

  • 函数小高级

    • 函数做变量

    • 函数做参数

  • 函数中高级

    • 函数做返回值

    • 函数的嵌套

  • 装饰器&闭包

  • 递归

  • 匿名函数

  • 内置函数

    2.1.2模块

  • 定义模块

    • 内置

    • 第三方

      • 安装:

        • pip包管理工具:pip install xlrd

        • 源码安装:

          • 下载源码包:压缩文件。

          • 解压

          • 打开cmd窗口,并进入此目录:cd c:\python39\lib\site-packages

          • 执行:python39 setup.py build

          • 执行:python39 setup.py install

      • 安装路径:c:\python39\lib\site-packages

    • 自定义

      • py文件

      • 文件夹_ _init _ _.py

  • 调用模块

    • import

      • import 模块1

      • import 模块1.模块2.模块3

    • from xximport xxx

      • from 模块.模块 import 函数

      • from 模块.模块 import 函数 as f

      • from 模块.模块 import *

      • from 模块 import 模块

      • from 模块 import 函数

2.1.3其他

  • 两个值数据交换

  • 推导式

    • 列表(*)

    • 字典

    • 集合

2.2作业

  1. 思维导图

  2. python学习笔记

  3. 本周作业

  4. 复习:从前到后

    • 笔记

    • 作业题

3.今日内容

  • 类和对象

3.1迭代器

自己不会写迭代器,只用。

任务:请展示列表中所有的数据。

  • while+索引+计数器

  • 迭代器,帮助你对某种对象(str/list/tuple/dict/set类创建的对象)中的元素进行逐一获取。

    • 列表转换成迭代器:

      • v1 = iter([11,2,2,3,])

      • v2 = v1._ _iter _ _()

    • 迭代器想要获取每个值:反复调用val = v1._ _next _ _()

    • 直到报错:Stoplteration错误,表示已经迭代完毕。

    • 如何判别一个对象是否是迭代器:内部是否有_ _ next_ _方法

  • for循环

    v1 = [11,22,33,44]

    #1,内部会将v1转换成迭代器
    #2,内部反复执行 迭代器.__next__()
    #3,取完不报错
    for item in v1:
    print(item)

     

3.2可迭代对象

  • 内部具有_ _iter _ _()方法

  • 可以被for循环

3.3生成器函数(内部是否包含yield)

def func():
print("你好")
yield 1
print("1")
yield 2
print("3")
yield(3)
print("4")

函数内部代码不会执行,返回一个生成器对象。

v1 = func()
#生成器是可以被for循环,一旦开始循环那么函数内部代码就会开始执行。
for item in v1:
print(item)

#################################################################

def func():
   count = 1
   while True:
       yield count
count += 1

val = func()

for item in val:
   print(item)

总结:函数中如果存在yield,那么该函数就是一个生成器函数,调用生成器函数会返回一个生成器,生成器只有被for循环时,生成器函数内部的代码才会执行,每次循环都会返回执行。

def func():
   """
  分批去读取文件中的内容,将文件的内容返回给调用者。
  :return:
  """
   cursor = 0
   while True:
       f = open("dd",'r',encoding = "utf-8")
f.seek(cursor)
data_list[]
for i in range(10):
   ilne = f.readline()
   if not line:
       return
   ata_list.append(line)
       cursor = f.tell()
f.close()
   for row in data_list:
       yield row

总结:迭代器,对可迭代对象的元素进行逐一获取,迭代器对象的内部都有一个next方法,用于以一个个获取数据。生成器,函数内部有yield则就是生成器函数,调用函数并返回一个生成器,循环生成器时,则函数内部代码才会执行。

day17

1.今日内容

  • 迭代器

  • 生成器

  • 装饰器

  • 项目结构

  • logging模块

2.内容回顾&作业

2.1内容回顾

2.1.1函数

  • 基本函数结构

     

    • 参数

    • 返回值

    • 执行函数

  • 函数小高级

    • 函数做变量

    • 函数做参数

  • 函数中高级

    • 函数做返回值

    • 函数的嵌套

  • 装饰器&闭包

  • 递归

  • 匿名函数

  • 内置函数

    2.1.2模块

  • 定义模块

    • 内置

    • 第三方

      • 安装:

        • pip包管理工具:pip install xlrd

        • 源码安装:

          • 下载源码包:压缩文件。

          • 解压

          • 打开cmd窗口,并进入此目录:cd c:\python39\lib\site-packages

          • 执行:python39 setup.py build

          • 执行:python39 setup.py install

      • 安装路径:c:\python39\lib\site-packages

    • 自定义

      • py文件

      • 文件夹_ _init _ _.py

  • 调用模块

    • import

      • import 模块1

      • import 模块1.模块2.模块3

    • from xximport xxx

      • from 模块.模块 import 函数

      • from 模块.模块 import 函数 as f

      • from 模块.模块 import *

      • from 模块 import 模块

      • from 模块 import 函数

2.1.3其他

  • 两个值数据交换

  • 推导式

    • 列表(*)

    • 字典

    • 集合

2.2作业

  1. 思维导图

  2. python学习笔记

  3. 本周作业

  4. 复习:从前到后

    • 笔记

    • 作业题

3.今日内容

  • 类和对象

3.1迭代器

自己不会写迭代器,只用。

任务:请展示列表中所有的数据。

  • while+索引+计数器

  • 迭代器,帮助你对某种对象(str/list/tuple/dict/set类创建的对象)中的元素进行逐一获取。

    • 列表转换成迭代器:

      • v1 = iter([11,2,2,3,])

      • v2 = v1._ _iter _ _()

    • 迭代器想要获取每个值:反复调用val = v1._ _next _ _()

    • 直到报错:Stoplteration错误,表示已经迭代完毕。

    • 如何判别一个对象是否是迭代器:内部是否有_ _ next_ _方法

  • for循环

    v1 = [11,22,33,44]

    #1,内部会将v1转换成迭代器
    #2,内部反复执行 迭代器.__next__()
    #3,取完不报错
    for item in v1:
    print(item)

     

3.2可迭代对象

  • 内部具有_ _iter _ _()方法

  • 可以被for循环

3.3生成器函数(内部是否包含yield)

def func():
print("你好")
yield 1
print("1")
yield 2
print("3")
yield(3)
print("4")

函数内部代码不会执行,返回一个生成器对象。

v1 = func()
#生成器是可以被for循环,一旦开始循环那么函数内部代码就会开始执行。
for item in v1:
print(item)

#################################################################

def func():
   count = 1
   while True:
       yield count
count += 1

val = func()

for item in val:
   print(item)

总结:函数中如果存在yield,那么该函数就是一个生成器函数,调用生成器函数会返回一个生成器,生成器只有被for循环时,生成器函数内部的代码才会执行,每次循环都会返回执行。

def func():
   """
  分批去读取文件中的内容,将文件的内容返回给调用者。
  :return:
  """
   cursor = 0
   while True:
       f = open("dd",'r',encoding = "utf-8")
f.seek(cursor)
data_list[]
for i in range(10):
   ilne = f.readline()
   if not line:
       return
   ata_list.append(line)
       cursor = f.tell()
f.close()
   for row in data_list:
       yield row

总结:迭代器,对可迭代对象的元素进行逐一获取,迭代器对象的内部都有一个next方法,用于以一个个获取数据。生成器,函数内部有yield则就是生成器函数,调用函数并返回一个生成器,循环生成器时,则函数内部代码才会执行。

上一篇:day17


下一篇:day17 (内置函数2)