# 列表生成式
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. http 请求 post get 长度限制

    一.问题起因在某项目释放后Bug统计的附件<释放后问题>里有:   问题  原因  分析  备注  CSV处理时,如果处理的主题数过多,发生URL参数上限的错误:  可变长度的参数通过UR ...

  2. java 位移运算符

    import org.junit.Test; /** * 1)<< : 左移运算符 * 2)>> : 右移运算符 (测试正数) * 3)>> : 右移运算符 (测试 ...

  3. 关于npm的坑

    http://javascript.ruanyifeng.com/nodejs/packagejson.html 一.npm常用易忘指令 npm list --depth=0:查看所有高级的npm m ...

  4. 关于v$librarycache的几个字段含义

    对v$librarycache中的get,pin和reload的含义: Gets: (Parse) The number of lookups for objects of the namespace ...

  5. PHP利用get_headers()函数判断远程的url地址是否有效

    问题: 利用url访问远程的文件.图片.视频时有时需要请求前判断url地址是否有效. 解决办法: (PHP 5, PHP 7) get_headers — 取得服务器响应一个 HTTP 请求所发送的所 ...

  6. VC++ 字符串Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR

            类   型     MBCS  UNICODE TCHAR char char WCHAR wchar_t wchar_t LPSTR char* char* LPCSTR const ...

  7. python 笔记 week1-- if while for

    1.添加环境变量 windows要加环境变量.linux若升级版本不一致, #!/usr/bin/env python 调用环境变量中的python #!/usr/bin/python 调用系统中默认 ...

  8. rmq区间最值

    时间复杂度O(NlogN)+O(Q) int a[N]; int dpmax[N][20],dpmin[N][20]; void first(int n) { mm(dpmax,0); mm(dpmi ...

  9. Solve Error: 'NSInvalidArgumentException', reason: '-[UITableView mas_makeConstraints:]: unrecognized selector sent to instance 0x7fa5c402fa00'

    下面是iOS开发用第三方库可能出现的错误,及其解决方法: 1. 'NSInvalidArgumentException', reason: '-[UITableView mas_makeConstra ...

  10. Web 自动化测试

    Selenium 名字的来源 在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 : > : Selenium 的中文名为 “ 硒 ” ,是一种化学元素的名字,它 对 汞 ( M ...