对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在校内发人人网状态(人人网看状态)
Feb 19 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python实现实时数据采集新型冠状病毒数据实例
Feb 04 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
python解释器安装教程的方法步骤
Jul 02 Python
Python 解析简单的XML数据
Jul 24 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
PHP之变量、常量学习笔记
2008/03/27 PHP
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python最长公共子串算法实例
2015/03/07 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
大学生见习报告总结
2014/11/04 职场文书
幼儿教师辞职信
2015/02/27 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server