python-17
# 列表生成式
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的更多相关文章
- python 17 内置模块
目录 1. 序列化模块 1.1 json 模块 1.2 pickle 模块 2. os 模块 3. sys 模块 4. hashlib 加密.摘要 4.1 加密 4.2 加盐 4.3 文件一致性校验 ...
- [Optimized Python] 17 - Performance bottle-neck
前言 对于一门编程语言,没接触到“优化”和“库代码”的源码理解程度,不足以谈“掌握”二字. 本篇的学习笔记,同时也意味着自己终于触及到了Python的junior国际水准.(joke) 要学的东西有很 ...
- python 17 异常
自 http://www.cnblogs.com/BeginMan/p/3171445.html 一.什么是错误,什么是异常,它们两者区别 这里解释如下:个人觉得很通俗易懂 错误是指在执行代码过程中发 ...
- [LeetCode][Python]17: Letter Combinations of a Phone Number
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 17: Letter Combinations of a Phone Numb ...
- Python 17 web框架&Django
本节内容 1.html里面的正则表达式 2.web样式简介 3.Django创建工程 Html里的正则表达式 test 用来判断字符串是否符合规定的正则 rep.test('....') ...
- python 17 函数基础(一)
http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...
- python 17篇 unittest单元测试框架
单元测试:开发程序的人自己测试自己的代码 unittest自动化测试框架 1.单元测试 import unittest def add(a,b): return a+b # 在运行时不要用run un ...
- 【Python 17】B分R计算器1.0(数值类型)
1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...
- python --- 17. 面向对象成员
面向对象的成员 能写的所有成员 一.变量 1.实例变量 访问时 对象.变量 2.类变量 访问时 类名.变量 注意: 二.方法 1.实例方法 必须有一个参数(self) 调用时 ...
- 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 ...
随机推荐
- input 呼起数字键盘
1. Android,定义 type="number" 2. iOS,定义 style="ime-mode: disabled;" 注,呼起数字键盘后,用户输入 ...
- hdoj:2061
#include <iostream> #include <string> using namespace std; int main() { int n,k; double ...
- maven and jwt
以目前浅薄的理解,jwt就是一种加密token的手段,这个token也只有自己能解开,如果客户端以cookie存这个token,可能会存在cookie被窃取的情况. 另外,jwt这中加密方式因为有过期 ...
- 关于C/C++中求最大公约数和最小公倍数的算法
1.更相减损法 int gcd(int a,int b) { while(a!=b) { if(a>b) a-=b; else b-=a; } return a; } 2.辗转相除法--递归 i ...
- 使用 Postman 取得 Token 打另一隻 API
使用 Postman 取得 Token 打另一隻 API Spring MVC token 统一校验和user 信息自动获取 使用token和SpringMVC来实现安全的RESTFul接口 spri ...
- Python学习小组微信群公告页面
<简明 Python 教程>读经群,PDF地址:https://pan.baidu.com/s/1FK8s4cTfwWxSktOfS95ArQ,PyCharm-Edu地址:https:// ...
- MyBatis 配置多数据源
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- asp.net core cors中间件
public class CorsMiddleware { private readonly RequestDelegate _next; public CorsMiddleware(RequestD ...
- C#GDI+ 绘制线段(实线或虚线)、矩形、字符串、圆、椭圆
C#GDI+ 绘制线段(实线或虚线).矩形.字符串.圆.椭圆 绘制基本线条和图形 比较简单,直接看代码. Graphics graphics = e.Graphics; //绘制实线 )) { pen ...
- 记录一份Oracle 正确的监听配置文件listener.ora与tnsnames.ora
一.前言 昨天中午接到领导指示,有其他组的负责人B在厄瓜多尔演示他们组的产品,然后我们组的负责人就想说也在那边搭一套环境,(北美那边的亚马逊云环境),让B帮忙演示下我们的系统. 于是,开始了一个比较曲 ...