1、Python生成器表达式

1)、Python生成器表达式

语法格式:

(expr for iter_var in iterable)

(expr for iter_var in iterable ifcond_expr)

2)、自定义生成器

函数中使用yield,会返回一个生成器对象。yieldx

生成器使用示例:

In [1]:list((i**2 for i in range(1,11)))

Out[1]:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

In [2]:def genNum(x):

...: y = 0

...: while y <= x:

...: yield y

...: y += 1

In [3]: g1= genNum(4)

In [4]:type(g1)

Out[4]:generator

In [5]:g1.next()

Out[5]:0

In [6]:g1.next()

Out[6]:1

In [7]:g1.next()

Out[7]:2

In [8]:g1.next()

Out[8]:3

In [9]:g1.next()

Out[9]:4

In [10]:g1.next()

--------------------------------------------------

StopIteration Traceback (most recent call last)

in()

----> 1g1.next()

StopIteration:

In [11]:def genNum(n):

....: i = 1

....: while i <= n:

....: yield i ** 2

....: i += 1

In [12]:g1 = genNum(20)

In [13]:for i in g1:

....: print i,

....:

1 4 9 1625 36 49 64 81 100 121 144 169 196 225 256 289 324 361400

2、Python装饰器

1)、装饰器本身是一个函数,用于装饰其它函数;

2)、功能:增强被装饰函数的功能;

装饰器一般接受一个函数对象作为参数,以对其进行增强

例1:装饰器使用示例

In [1]:def decorater(func):

...: def wrapper():

...: print "Just a Decorater!"

...: func()

...: raw_input('Please Input your name:')

...: return wrapper

...:

In [2]:@decorater

...:def show():

...: print "I am from China."

...:

In [3]:show()

Just aDecorater!

I am fromChina.

PleaseInput your name:Fieldyang

例2:对能够传入参数的函数进行装饰

In [1]:def decorater(func):

...: def wrapper(x):

...: print "Just a Decorater!"

...: func(x)

...: raw_input('Please Input your name:')

...: return wrapper

...:

In [2]:@decorater

...:def show(x):

...: print "I am from China.%s" %x

...:

In [3]:show('how are you ?')

Just aDecorater!

I am fromChina.how are you ?

PleaseInput your name:Fieldyang

3、Python递归

递归需要边界条件,递归前进段和递归返回段;

10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 *1

10 * (10-1)* ((10-1)-1)* ...

递归函数使用示例:

In [1]:def recursion(n):

...: if n <= 1: return 1

...: else: return n * recursion(n-1)

...:

#递归函数相当于如下过程:

In [2]: recursion(3) = 3 * recursion(2)= 3 * 2 *recursion(1)=3*2*1

KeyboardInterrupt

In [3]:recursion(3)

Out[3]:6

In [4]:recursion(4)

Out[4]:24

In [5]:recursion(5)

Out[5]:120

In [6]:recursion(10)

Out[6]:3628800

以上这篇对Python生成器、装饰器、递归的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: 对Python生成器、装饰器、递归的使用详解

本文地址: http://www.cppcns.com/jiaoben/python/265944.html

python 生成器装饰器_对Python生成器、装饰器、递归的使用详解相关推荐

  1. python定义静态变量_对Pyhon实现静态变量全局变量的方法详解

    python不能像C++一样直接定义一个static变量或者通过extern来导入别的库的变量而实现数据共享,但是python的思想是通过模块化来解决这个问题,就是通过模块来实现全局变量. 首先新建一 ...

  2. python中transpose函数_对numpy中的transpose和swapaxes函数详解

    transpose() 这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数. 我们看如下一个numpy的数组: `arr=np.arange(16).reshape(( ...

  3. python做估值模型_通证估值模型-费雪模型与净现值模型详解

    通证估值模型-费雪模型与净现值模型详解 一.费雪模型,适合货币型通证 1)公式:MV= PQ M: 货币供应量 V: 货币流通速度 P:劳务平均价格 V:劳务总数 维基百科地址:Equation of ...

  4. python alpha beta 剪枝_一看就懂的 Alpha-Beta 剪枝算法详解

    Alpha-Beta剪枝用于裁剪搜索树中没有意义的不需要搜索的树枝,以提高运算速度. 假设α为下界,β为上界,对于α ≤ N ≤ β: 若 α ≤ β  则N有解. 若 α > β 则N无解. ...

  5. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  6. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  7. python大数据免费_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  8. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. 基于CentOS中PXE网络环境构建实例
  2. 直播预告丨聚焦银行数字化运营体系搭建,助力银行构建核心竞争力
  3. ActiveMQ的简单例子应用
  4. Linux Shell编程第四篇case语句
  5. python爬取豆瓣电影TOP250
  6. 学习PHP时的一些总结(五)
  7. Hdu1166单点更新线段树
  8. np.random.seed(0)作用
  9. java 将pdf转换成word_java如何实现pdf转word?
  10. 【引用】使用CommonDialog的ShowSave后如何判断是保存还是取消?
  11. 张宇1000题高等数学 第十三章 多元函数微分学
  12. 写CSDN博客时,调节字体大小、颜色及其他样式的常用操作方法
  13. radmin注册密码
  14. Ubuntu快速下载电驴ed2k文件
  15. matlab中ans的含义
  16. 元素滚动 scroll 系列
  17. SELECT不加FROM子句的用法
  18. 使用openpyxl进行多个excel数据合并
  19. Typora一款让你无法拒绝的MarkDown编辑器
  20. 什么是支撑位和阻力位

热门文章

  1. 并注册烧写钩子 获取启动介质类型_PyTorch中对张量登记注册反向传播的钩子函数,并展示调用顺序...
  2. Linux后台进程(和jobs、bg、fg)
  3. 【caffe】ubuntu配置python接口----pycaffe
  4. 目标检测——数据增强的学习笔记
  5. CUDA——调试“ImportError: libcudart.so.9.2: cannot open shared object file: No such file or directory”
  6. Machine Learning课程中的常见单词的含义
  7. Windows下anyproxy的配置文件路径
  8. CPU中的Little Endian与Big Endian
  9. Flex的Tree全部展开收缩,ji展开选中单个节点
  10. 【Linux】Ubuntu 代理配置