对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批量修改文件后缀示例代码分享
Dec 24 Python
Python threading多线程编程实例
Sep 18 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
python3.6生成器yield用法实例分析
Aug 23 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
PyTorch实现AlexNet示例
Jan 14 Python
利用Python计算KS的实例详解
Mar 03 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Python3爬虫发送请求的知识点实例
Jul 30 Python
python处理json数据文件
Apr 11 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
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
python实现银行实战系统
2020/02/26 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Django更新models数据库结构步骤
2020/04/01 Python
python右对齐的实例方法
2020/07/05 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
django有哪些好处和优点
2020/09/01 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
文秘专业个人求职信
2013/12/22 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
培训心得体会怎么写
2016/01/25 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB