# 列表生成式
a = [x*2 for x in range(10)] # 这两个变量必须一致
print(a) #列表 元组的高级赋值办法
b,c = ["",6]
print(b) #
print(c) #
 # python的垃圾回收机制
#给变量赋值的时候值的内存地址被变量引用
#如果值的内存地址没有被任何对象引用的话,python就将该内存进行回收释放 #生成器额2种创建方式 #生成器的创建方式一:
a = (x*2 for x in range(10))
#print(a) <generator object <genexpr> at 0x0000000001DEA1B0> 目前没有任何值,只是个迭代器 #生成器的创建方式二:
#在函数内部使用yield关键字创建生成器
#函数本身不是生成器,但是函数的执行就是生成器 如 test() 就是个生成器 def test():
print("ok")
yield 2 #yield后面的值相当于返回值
print("ok2")
yield 5 #生成器中值的遍历next()方法
#生成器可以当成迭代器去使用for方法迭代 for i in a: next(i)
a = test()
#next(a) #这样会执行yield关键字前面的语句,返回值为yield后面跟的值---ok
#next(a) #执行第二遍的时候,指针会跳到yield 2 这里 开始往下执行 后面依次这样,直到遇到return 就没有可迭代的对象了-ok2
#next(a) #没有可迭代的对象会报错! for u in a:
# print(u) #ok 2 ok2 5
print(next(a)) #ok ok2 5 为什么会这样呢? # 生成器的值只能按照顺序一个一个去取,不能随机去取
# 在pyhton 2.0 版本中,使用的变量方式是__next__() #什么是可迭代对象呢?
#对象的内部有__iter__ 方法的都是可迭代对象 #斐波那契函数的实现函数
# 考察你变量的赋值
def fib(max):
n,a,b =0,0,1
while n < max:
print(b)
a,b = b,a+b
n = n+1
 # 如何将一个菲薄纳妾函数转化成一个生成器呢?
# 思路 就是把print的输出地方转化为 yield + 输出值 #肥波纳妾函数 用生成器的实现
# def fib(max):
# n,a,b =0,0,1
# while n < max:
# print(b)
# a,b = b,a+b
# n = n+1
#*************************** def fib(max):
n,a,b =0,0,1
while n < max:
yield b
a,b = b,a+b
n = n+1 x = fib(10) #生成器产生
#实现方式一:
for i in x:
print(i)
#实现方式二:
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
 #生成器 之 send() 方法

 def test():
print("OK1") #OK1
count =yield 1 #eee
print(count) #OK
print("OK") #
yield 4 # 4 作为x.send("eee")的返回值 x = test() #生成 生成器对象
# x.send("eee") #首次使用会报错!
# #send()方法首次使用传入参数会报错
# 原因:send穿参数值的前提是需要 在yield 返回1这个值后 也就是在yiled执行之后,才能执行send带参数的值赋值给变量count
# 此时 执行print(count)之后会打印出 send传入的值
# 但是 在执行第二个 yield之后,第二个yield的返回值会再次赋值给 count 所以导致
# print(x.send("eeee")) # 值为2 # 接下来进行测试;
x.send(None) #这样执行相当于 next(x)
q = x.send("eee")
print(q) #执行的结果为 2
 #使用生成器实现伪并发 yield
#通过yield实现在单线程的情况下实现并发运算的效果 
import time
def consumer(name):
print("%s 准备吃包子啦!" %name)
while True:
baozi = yield print("包子[%s]来了,被[%s]吃了!" %(baozi,name)) def producer(name):
c = consumer('A')
c2 = consumer('B')
c.__next__()
c2.__next__()
print("老子开始准备做包子啦!")
for i in range(10):
time.sleep(1)
print("做了2个包子!")
c.send(i)
c2.send(i) producer("alex") # 首先理清楚思路
 # 迭代器
# 生成器一定是迭代器 迭代器不一定是生成器
# 迭代器的调用方法 该方法返回一个迭代器对象
x = [1,23,4,2,8]
x.__iter__() #方式一
iter(x) #方式二 python3 内置方法调用 # 什么事迭代器?
#条件一:有iter()方法
#条件二:有next()方法
# 哪些是可迭代对象呢?
# list tuple,dict string #判断一个对象是否为可迭代对象的方法 使用
l= [1,2]
print(isinstance(l,list)) #判断[1,2] 是否为list对象
print(isinstance(l,Iterable)) #判断是否为可迭代对象
print(isinstance(l,Iterator)) #判断该对象是否为迭代器 # for 循环所做的三件事
# 1.调用可迭代对象的iter()方法 返回一个迭代器或者迭代对象
# 2.调用迭代器的next()方法进行数据的提取
# 3.处理迭代器的异常,比如超过迭代器的处理元素该怎么处理

参考链接:

http://www.cnblogs.com/yuanchenqi/articles/5769491.html

http://www.cnblogs.com/alex3714/articles/5765046.html

python-17的更多相关文章

  1. python 17 内置模块

    目录 1. 序列化模块 1.1 json 模块 1.2 pickle 模块 2. os 模块 3. sys 模块 4. hashlib 加密.摘要 4.1 加密 4.2 加盐 4.3 文件一致性校验 ...

  2. [Optimized Python] 17 - Performance bottle-neck

    前言 对于一门编程语言,没接触到“优化”和“库代码”的源码理解程度,不足以谈“掌握”二字. 本篇的学习笔记,同时也意味着自己终于触及到了Python的junior国际水准.(joke) 要学的东西有很 ...

  3. python 17 异常

    自 http://www.cnblogs.com/BeginMan/p/3171445.html 一.什么是错误,什么是异常,它们两者区别 这里解释如下:个人觉得很通俗易懂 错误是指在执行代码过程中发 ...

  4. [LeetCode][Python]17: Letter Combinations of a Phone Number

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 17: Letter Combinations of a Phone Numb ...

  5. Python 17 web框架&Django

    本节内容 1.html里面的正则表达式 2.web样式简介 3.Django创建工程 Html里的正则表达式 test 用来判断字符串是否符合规定的正则       rep.test('....')  ...

  6. python 17 函数基础(一)

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  7. python 17篇 unittest单元测试框架

    单元测试:开发程序的人自己测试自己的代码 unittest自动化测试框架 1.单元测试 import unittest def add(a,b): return a+b # 在运行时不要用run un ...

  8. 【Python 17】B分R计算器1.0(数值类型)

    1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...

  9. python --- 17. 面向对象成员

    面向对象的成员 能写的所有成员 一.变量 1.实例变量 访问时      对象.变量 2.类变量 访问时     类名.变量 注意: 二.方法 1.实例方法 必须有一个参数(self) 调用时    ...

  10. A few things to remember while coding in Python.

    A few things to remember while coding in Python. - 17 May 2012 - UPDATE: There has been much discuss ...

随机推荐

  1. 巴塞罗那VS皇家马德里

    刚刚看完巴萨VS皇马的比赛,跌宕起伏,悬念保持到了最后一分钟的最后一回合 ---- 梅西绝杀. 工作之后,很少看比赛了.一直觉得梅西.C罗双子星的时代正在接近尾声,自己要尽量看一场少一场,免得到时后悔 ...

  2. WordPress 安装插件导致 HTTP 500 内部服务器错误的问题

      春节这几天忙着过节,一直没有看网站,今天登陆上来看到插件有更新,点开更新后,悲剧发生了.页面就无法加载,出现错误无法加载了,着实让我慌了慌(想到重来就郁闷) Chrome:该网页无法正常工作www ...

  3. 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,

    第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...

  4. [ java 工具类] xml字符串解析成Map(DOM解析)

    package com.tencent.jungle.wechat.util; import com.google.inject.Singleton; import org.w3c.dom.Docum ...

  5. 蜕变成蝶~Linux设备驱动之CPU与内存和I/O

    那是世上最远的距离 思念让我无法去呼吸 你的一动和一举 占据我心里 陪我每个孤独无尽的夜里 用我心中盛放的画笔 描绘你微笑时的绚丽 爱让人痛彻心底 我却不怀疑 你的存在是我生命的奇迹 感受你的每一次的 ...

  6. java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory

    java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to java ...

  7. css特效 - 环形文字

    记一次群友问题和回答: 下面这种效果,文字是动态的,不能使用图片的情况下,前端怎么实现? 一.插件实现: arctext.js 教程地址:实现文字平滑弯曲弧形效果的插件-arctext.js 二.原生 ...

  8. (二)区块链的共识算法:PoS 及其 例子 代码 实现

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  9. Linux下的awk文本分析命令详解

    一.简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/ ...

  10. 求问ps如何导出单个切片及PS导出所有的切片图像

    在ps里面对图片进行切片,并根据需要弄好切片,利用shift键,可以选择其中部分的切片: 弄好以后,点击“文件”,选择“存储为WEB和设备所用格式”:. 在打开的“存储为WEB和设备所用格式”界面上点 ...