Python3 迭代器,生成器,装饰器
1.迭代器
迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常
a='abcdef'
b=iter(a) #创建迭代器对象
print(type(b))
while True:
try:
print(next(b))
except StopIteration:
break
输出结果:

2.生成器
生成器就是含有yield关键字的函数,是一种用普通语法定义的迭代器.
def gen():
yield 'a'
yield 'b'
yield 'c'
g=gen()
print(type(g))
while True:
try:
print(next(g))
except StopIteration:
break
输出结果:

系统遇到yield关键词会将值返回,称为挂起,与return不同
def gen(n):
while n>0:
print('Berofe')
return n
n-=1
print('After')
g=gen(3)
print(g)
输出结果:

def gen(n):
while n>0:
print('Berofe')
yield n
n-=1
print('After')
g=gen(3)
while True:
try:
print(next(g))
print('------------')
except StopIteration:
break
输出结果:

yield会挂起,然后下次在挂起位置继续执行
3.装饰器

输出结果:

Python3 迭代器,生成器,装饰器的更多相关文章
- Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
- Python基础-迭代器&生成器&装饰器
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 我现在有个需求,看 ...
- 迭代器/生成器/装饰器 /Json & pickle 数据序列化
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- day04 迭代器&生成器&装饰器
目录 1.迭代器 2.生成器 3.推导式 4.匿名函数 5.内置函数 6.递归 7.闭包 8.装饰器 一.迭代器 特点: 1. 省内存 2. 只能向前. 不能反复 3. 惰性机制 让不同的数据类型 ...
- python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化
生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...
- Python(迭代器 生成器 装饰器 递归 斐波那契数列)
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...
- 4.python迭代器生成器装饰器
容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元素存储在内存中 ...
- python中的迭代器&&生成器&&装饰器
迭代器iterator 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外, ...
- Python学习——迭代器&生成器&装饰器
一.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅 ...
随机推荐
- html中的居中问题
1.表格居中:<table>标签的align属性 <table align="center">...... </table> 2.表格内容居中; ...
- ABAP术语-BAPI ExplorerSupertype
Supertype 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/17/1109837.html Object type from whic ...
- 解决 LLVM 错误 cannot specify -o when generating multiple output files
Xcode 9 使用 LLVM 混淆器会提示错误: clang: error: cannot specify -o when generating multiple output files 通过对比 ...
- Debian中CodeIgniter+nginx+MariaDB+phpMyAdmin配置
本文不讲述软件安装过程,记述本人在Debia中配置CodeIgniter时遇到的问题及解决方法,希望能够为有需要的人提供帮助. 一.Debian版本及所需的软件 Debian 9.8 stretch ...
- Facade(外观模式或门面模式)
常用的模式之一. 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 完美地体现了依赖倒转原则和迪米特法则的思想. Facade模式应用场景: 首先 ...
- python中for......else......的使用
for x in range(5): if x == 2: print(x) # break else: print("执行else....") 上述代码:当缺少break关键字时 ...
- Django自定制分页功能
URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...
- Java学习笔记十七:Java中static使用方法
Java中static使用方法 一:Java中的static使用之静态变量: 我们都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的 ...
- 542. 01 Matrix
class Solution { public: vector<vector<int>> res; int m, n; vector<vector<int>& ...
- Go中处理文本格式
首先是xml 解析xml package main import ( "encoding/xml" //xml标准库 "fmt" "io/ioutil ...