# 列表生成式
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. ROS工作空间和程序包创建

    预备工作后面操作中我们将会用到ros-tutorials程序包,请先安装: $ sudo apt-get install ros-<distro>-ros-tutorials 将 < ...

  2. fiddler 使用记录

    fiddler 工作原理 Fiddler 启动后将自己变成一个代理服务器,这个代理服务器默认监听 127.0.0.1:8888. Filddler 启动后浏览器的代理会被自动更改为 127.0.0.1 ...

  3. 使用DDL触发器同步多个数据库结构

    使用DDL触发器同步多个数据库结构 背景:当开发组比较大时,势必会分布到不同的地理位置,若无法在同一个快速网络中工作,就会造成多个开发库并存的局面,这样就需要多个开发库结构的同步,甚至是开发测试数据的 ...

  4. Java不区分大小写的CaseInsensitiveMap

    Java中对于键值对,我们习惯使用类HashMap,使用方式:Map<String, String> result=new HashMap<String,String>(); ...

  5. 《转》Logistic回归 多分类问题的推广算法--Softmax回归

    转自http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 简介 在本节中,我们介绍Softmax回归模型,该模型是log ...

  6. 【分布式系列】session跨域及单点登录解决方案

    Cookie机制 Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息. ...

  7. 如何免费下载付费音乐歌曲,6个网站+8个APP

    现在听音乐的软件,QQ音乐,酷狗,网易云等,很多歌曲可以在线听. 但是下载某些歌曲或者在线听高品质无损的都需要付费. 这一期,给大家推荐的是免费下载付费歌曲工具,包括网站跟APP. 网站篇 1.VIP ...

  8. linux安装rabbitmq以及相关的操作命令

    1.安装rabbitmqa)进入rabbitmq文件的存放目录b)rpm -ivh rabbitmq-server-3.5.4-1.noarch.rpm2.修改配置cd /etc/rabbitmqcd ...

  9. 项目中的java文件没有在WEB-INF\classes中生成class文件

    https://blog.csdn.net/u011008029/article/details/49303723 病因: 我在eclipse 上面  编的web  项目 并没有错 但是 一直出现 5 ...

  10. SSO(singlesignon)单点登录

    技术实现机制: 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录:根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket ...