对Python生成器、装饰器、递归的使用详解


Posted in Python onJuly 19, 2019

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 相关文章推荐
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
Django中使用group_by的方法
May 26 Python
Python进行数据提取的方法总结
Aug 22 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
python构建深度神经网络(续)
Mar 10 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
python使用sessions模拟登录淘宝的方式
Aug 16 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
Python实现ATM系统
Feb 17 Python
深入了解python列表(LIST)
Jun 08 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
django中SMTP发送邮件配置详解
Jul 19 #Python
对Python函数设计规范详解
Jul 19 #Python
在django view中给form传入参数的例子
Jul 19 #Python
使用Python制作表情包实现换脸功能
Jul 19 #Python
解决Django一个表单对应多个按钮的问题
Jul 18 #Python
Django工程的分层结构详解
Jul 18 #Python
django mysql数据库及图片上传接口详解
Jul 18 #Python
You might like
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php权重计算方法代码分享
2014/01/09 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python的pycurl包用法简介
2015/11/13 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
python框架flask表单实现详解
2019/11/04 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
消防器材管理制度
2014/01/28 职场文书
双语教学实施方案
2014/03/23 职场文书
初中家长寄语
2014/04/02 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server