对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中decorator使用实例
Apr 14 Python
Python实现合并字典的方法
Jul 07 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
Python实现定时任务
Feb 08 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
突发奇想的一个jquery插件
2010/11/19 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
jquery.pager.js实现分页效果
2019/07/29 jQuery
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
python中反射用法实例
2015/03/27 Python
详细介绍Python中的偏函数
2015/04/27 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
python 上下文管理器使用方法小结
2017/10/10 Python
如何在python中执行另一个py文件
2020/04/30 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
初一英语教学反思
2014/01/11 职场文书
玲玲的画教学反思
2014/02/04 职场文书
医学类个人求职信范文
2014/02/05 职场文书
森林防火工作方案
2014/02/14 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
音乐学专业求职信
2014/07/22 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS