1.如果在一个方法中有yield关键字则该方法返回的是一个生成器对象

2.对生成器对象进行操作必须进行迭代或循环处理

例如:

yield_test.py

#!/usr/bin/env python
# _*_ coding:UTF-8 _*_

def MyReadLines():
    seek = 0
    while True:
        with open('myFile.txt', 'rb') as f:
            f.seek(seek)
            line = f.readline()
            if line:
                seek = f.tell()
                yield line
            else:
                return

if __name__ == "__main__":
    print MyReadLines()
    for line in MyReadLines():
        print line

结果:

/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/day09/yield_test.py
<generator object MyReadLines at 0x10f0fd410>
##

# User Database

# 

# Note that this file is consulted directly only when the system is running

# in single-user mode.  At other times this information is provided by

# Open Directory.

#

# See the opendirectoryd(8) man page for additional information about

# Open Directory.

##

nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false

root:*:0:0:System Administrator:/var/root:/bin/sh

daemon:*:1:1:System Services:/var/root:/usr/bin/false

_uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico

_taskgated:*:13:13:Task Gate Daemon:/var/empty:/usr/bin/false

_networkd:*:24:24:Network Services:/var/networkd:/usr/bin/false

_installassistant:*:25:25:Install Assistant:/var/empty:/usr/bin/false

_lp:*:26:26:Printing Services:/var/spool/cups:/usr/bin/false

_postfix:*:27:27:Postfix Mail Server:/var/spool/postfix:/usr/bin/false

_scsd:*:31:31:Service Configuration Service:/var/empty:/usr/bin/false

_ces:*:32:32:Certificate Enrollment Service:/var/empty:/usr/bin/false

_appstore:*:33:33:Mac App Store Service:/var/empty:/usr/bin/false

_mcxalr:*:54:54:MCX AppLaunch:/var/empty:/usr/bin/false

_appleevents:*:55:55:AppleEvents Daemon:/var/empty:/usr/bin/false

_geod:*:56:56:Geo Services Daemon:/var/db/geod:/usr/bin/false

_serialnumberd:*:58:58:Serial Number Daemon:/var/empty:/usr/bin/false

_devdocs:*:59:59:Developer Documentation:/var/empty:/usr/bin/false

_sandbox:*:60:60:Seatbelt:/var/empty:/usr/bin/false

_mdnsresponder:*:65:65:mDNSResponder:/var/empty:/usr/bin/false

_ard:*:67:67:Apple Remote Desktop:/var/empty:/usr/bin/false

_www:*:70:70:World Wide Web Server:/Library/WebServer:/usr/bin/false

_eppc:*:71:71:Apple Events User:/var/empty:/usr/bin/false

_cvs:*:72:72:CVS Server:/var/empty:/usr/bin/false

_svn:*:73:73:SVN Server:/var/empty:/usr/bin/false

_mysql:*:74:74:MySQL Server:/var/empty:/usr/bin/false

_sshd:*:75:75:sshd Privilege separation:/var/empty:/usr/bin/false

_qtss:*:76:76:QuickTime Streaming Server:/var/empty:/usr/bin/false

_cyrus:*:77:6:Cyrus Administrator:/var/imap:/usr/bin/false

_mailman:*:78:78:Mailman List Server:/var/empty:/usr/bin/false

_appserver:*:79:79:Application Server:/var/empty:/usr/bin/false

_clamav:*:82:82:ClamAV Daemon:/var/virusmails:/usr/bin/false

_amavisd:*:83:83:AMaViS Daemon:/var/virusmails:/usr/bin/false

_jabber:*:84:84:Jabber XMPP Server:/var/empty:/usr/bin/false

_appowner:*:87:87:Application Owner:/var/empty:/usr/bin/false

_windowserver:*:88:88:WindowServer:/var/empty:/usr/bin/false

_spotlight:*:89:89:Spotlight:/var/empty:/usr/bin/false

_tokend:*:91:91:Token Daemon:/var/empty:/usr/bin/false

_securityagent:*:92:92:SecurityAgent:/var/db/securityagent:/usr/bin/false

_calendar:*:93:93:Calendar:/var/empty:/usr/bin/false

_teamsserver:*:94:94:TeamsServer:/var/teamsserver:/usr/bin/false

_

老男孩python学习自修第九天【yield生成器】的更多相关文章

  1. 老男孩python学习自修第十九天【异常处理】

    1.常见的错误 TypeError 类型错误 NameError 没有该变量 ValueError 不期望的值 AttributeError 没有该属性 UnboundLocalError 没有该局部 ...

  2. 老男孩python学习自修第二十四天【多进程】

    1. 体验多进程的运行速度 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from multiprocessing import Pool import t ...

  3. 老男孩python学习自修第二十三天【多线程】

    1. 线程的创建与运行 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from threading import Thread def foo(param1 ...

  4. 老男孩 python学习自修第二十二天【文件上传与下载】

    1.使用socket实现文件上传 server.py #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import os import SocketServe ...

  5. 老男孩python学习自修第十八天【面向对象】

    1.类与对象(构造方法与实例化) #!/usr/bin/env python # _*_ coding:UTF-8 _*_ class Province: def __init__(self, nam ...

  6. 老男孩python学习自修第十七天【装饰器】

    装饰器:在某个方法执行前后去执行其他新定义的行为 例如: #!/usr/bin/env python # _*_ coding:UTF-8 _*_ def before_say_hello(): pr ...

  7. 老男孩python学习自修第十六天【常用模块之sys和os】

    例子: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys. ...

  8. 老男孩python学习自修第十五天【常用模块之time】

    例如: #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import time if __name__ == "__main__": pr ...

  9. 老男孩python学习自修第十四天【序列化和json】

    序列化是使用二进制的方式加密列表,字典或集合,反序列化是解密的过程:序列化开启了两个独立进程进行数据交互的通路 使用pickle进行序列化和反序列化 例如: pickle_test.py #!/usr ...

随机推荐

  1. esp8266 免费wifi强推广告神器(0) 项目介绍

    某宝产品 WIFI SSID广告终端路由推广宝 简单来说,手机连接免费wifi,自动弹出广告页面,有二维码和电话,点击电话直接打电话给商家客服,用户点击链接跳转到商家网页. 同时存在设置页面,使用者可 ...

  2. 01 python初学(注释、交互、if while for)

    为了能生存下去,一定要坚持学习! 目录  1. 注释 2. 用户交互 3. if .while.for 语句 1. 注释  单行注释: # 多行注释: 三个单引号 || 三个双引号 2. 用户交互: ...

  3. jenkins使用1----初始化设置

    ####一.基本设置 1.首先找到系统管理 2.再找到全局配置一把黄色的锁头 3.新增JDK.Maven等 别名随便 下面的值添加jdk在jenkins这台机器上的位置,如果没找到可以点击自动安装,并 ...

  4. SWIG 的应用(一)

    用 C/C++ 扩展 Python. - 如果仅使用标准 C 库函数,则可以使用 Python 自带的 ctypes 模块,或者使用 cffi. - 如果要使用自定义 C/C++ 函数,又不怕写 wr ...

  5. 多线程爬虫爬取详情页HTML

    注意:如果想爬取详情页的信息请按须添加方法 import requests import os import re import threading from lxml import etree #爬 ...

  6. upper_bound

    头文件: #include<algorithm> 作用: 查找第一个大于给定数的元素或位置 在从小到大的排序数组中, 1.容器 (1).返回元素 #include<cstdio> ...

  7. 深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)

    目录 1.类文件结构 1.1 Class类文件结构 1.2 魔数与Class文件的版本 1.3 常量池 1.4 访问标志 1.5 类索引.父索引与接口索引集合 1.6 字段表集合 1.7 方法集合 1 ...

  8. MyBatis-你所不了解的sql和include

    目录 <sql> 节点的基础 <include> 节点 <sql> 节点包含的节点 一起来学习 mybatis @ 在前一篇[MyBatis动态SQL(认真看看, ...

  9. 【C#复习总结】dynamic

    介绍 C# 4 引入了一个新类型 dynamic. 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查. 大多数情况下,该对象就像具有类型 object 一样. 在编译时,将假定 ...

  10. C#中存储数据的集合:数组、集合、泛型、字典

    为什么把这4个东西放在一起来说,因为c#中的这4个对象都是用来存储数据的集合……. 首先咱们把这4个对象都声明并实例化一下: //数组 ]; //集合 ArrayList m_AList = new ...