一、什么是生成器?

使用了yield函数 就被称之为生成器,生成器是一个返回迭代器的函数,说白了生成器就是迭代器,只能用于迭代操作。

不懂?没关系,下面就一个斐波那契数列为例来进行讲解:

依靠简单循环生成的一个“斐波那契数列”

a,b = 0,1
while a<100:a,b = b,a+bprint(a)

程序运行结果如下:

这段代码是通过非递归的方法实现斐波那契数列,接下来,我就用生成器的方式实现斐波那契数列

import sys
def fibonacci(n): #生成迭代器函数a,b,count = 0,1,0while True:if(count > n):return n              yield a #使用生成器(迭代器,当程序遇到yield函数时,会暂停并保存当前所有的信息——# 并返回yield的值,然后程序运行到next()函数时,并从当前位置继续运行a,b = b,a+bcount = count + 1f = fibonacci(10) #f是一个迭代器,由生成器生成,10为递归结束的信号while True:try:print(next(f),end=" ")except:sys.exit()

程序的运行结果如下:

二、什么是迭代器?

迭代是Python众多强大的功能之一,它是访问集合元素的一种方式,它是可以记住遍历对象的位置,这点和for循环中enumerate关键字有点相似,不过enumerate其实是记住数组,元组,列表等等下标的一个函数。但是迭代器会从集合中的第一个元素开始访问,一直到最后一个元素,迭代器只能往前不会后退。

迭代器有两种方法:

iter()

next()

字符串,列表,元组,字典(键值)的对象都可以创建迭代器,下面是几个简单得实例

list = [2,1,4,6]
It = iter(list)
for i in It:print(i,end=" ")

同理,也可以使用next() 函数

import syslist = [11,22,33,454]It = iter(list)
while True:try:print(next(It))except:sys.exit()

三、 什么是装饰器?

前面讲了生成器,迭代器怎么又来了个装饰器 ,装饰器的功能还是很强大的,它能够不改变函数本地的结构,却可以给函数增加额外的功能,下面就以实例来讲解

1、我们先用函数打印一句话

def sayHi():    print("Hi,man")
#sayHi()          #这是函数调用的方法#还有另一种输出的方法
x = sayHi
x()

现在我们希望可以在“sayHi”函数之前输入一句话,这种在代码运行期间动态增加功能的方式,称之为装饰器,下面我们就改改上面这个代码:

2、改一改

def sayHello(func):def inner():print("Hello,I am Gorit")return funcreturn inner()def sayHi():print("Hi,man")x = sayHello(sayHi)s()

这样的效果看起来不是很好,我们每次都要加个功能都要使用

x = sayHello(sayHi)s()

对于这种情况,Python提供了语法糖 —— “@”,这样我们就可以轻松的输出我们想要的语句

3、有了语法糖的加入,程序变得更简单

def sayHello(func):def inner():print("Hello,I am Gorit")return funcreturn inner()@sayHellodef sayHi():print("Hi,man")
sayHi()

在上面的代码中,我们定义了一个sayHello(func)函数,sayHello接受参数func,里面又内嵌一个 inner()函数,然后输出(“Hello,I am Gorit”,之后返回 func 参数,(也就是我们要传入的参数),然后再返回inner函数,然后我们发现这就是一个封闭的函数,也称为闭包函数

然后我们再sayHi()之前加入 @sayHello, 其目的使程序运行到这里会调用装饰器函数"sayHello",并把被装饰的函数"sayHi"作为参数传入,此时"sayHi"是指向sayHello.inner 的地址,然后再调用sayHi时,实则是调用sayHello.inner

最后: 可以加入群号:914172719 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

没有5年测开经验,还真说不清Python生成器、迭代器、装饰器相关推荐

  1. 我为什么拒绝了一个5年测开经验的候选人

    某互联网大厂的测试开发岗位招聘时,收到一位 5 年测试开发经验的候选人,是南京大学软件学院的硕士,毕业后一直在国内的互联网巨头公司从事测试框架和工具平台的开发工作. 他简历中参与开发过的测试框架和工具 ...

  2. 【社招】一年测开经验转后端开发经历。

    背景 先说下背景吧,我是2019年毕业的本科生,985非科班,而且是和计算机专业八杆子打不着的那种非科班.大二的时候打球认识了我们学校一个计算机专业的学生,听他说互联网现在薪资好高,写代码特别有意思, ...

  3. 【测开面经】Python篇

    文章目录 Python的优点 Python基本数据类型 数组和列表的区别 列表.元组.集合与字典的区别 可变类型与不可变类型以及is与==的比较 参数 格式化字符串 生成器 生成器的应用场景 生成器与 ...

  4. python测开课程_【测开课程】02 Python基础

    一.Python语言的特点(优点) 1.简单易用,支持在macOS.Windows.Unix等操作系统适用 2.编程语言,大量的数据结构.支持开发大型程序 3.错误检查很多 4.高级语言,内置灵活数组 ...

  5. 10年测开经验面试35K公司后,吐血整理出高频面试题和答案!

    一:前言 在当今竞争激烈的职场环境中,拥有丰富的测试开发经验已成为众多企业青睐的重要条件之一.而在面试过程中,高频面试题更是能够考察应聘者的实际能力和知识水平.本文作者具备10年的测试开发经验,并通过 ...

  6. 八年测开经验面试28K公司后,吐血整理出高频面试题和答案

    如何测试纸杯呢? ❶ 参考点 测试用例设计 ❷ 面试命中率 80% ❸ 参考答案 功能性:用水杯装水看漏不漏:水能不能被喝到 安全性:杯子有没有毒或细菌 可靠性:杯子从不同高度落下的损坏程度 可移植性 ...

  7. 阿里10年测开经验分享-我的软件测试之路也并不是一帆风顺

    简单的先说一下,坐标西安,16届本科毕业,目前在跳槽,一共有面试了有5家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有5家,另外2家失败的原因在于: 1.对于 ...

  8. 8年测开经验面试28K公司后,吐血整理出1000道高频面试题和答案

    1.python的数据类型有哪些 答:Python基本数据类型一般分为:数字.字符串.列表.元组.字典.集合这六种基本数据类型. 浮点型.复数类型.布尔型(布尔型就是只有两个值的整型).这几种数字类型 ...

  9. python webdriver点击指令_测开系列Selenium Webdriver Python(20)--Webdriver运行原理

    Webdriver运行原理 转帖请注明出处!谢谢 在开发Webdriver的自动化脚本过程中,Webdriver后台在创建WebDriver实例的过程中,先确认浏览器的原生组件中是否存在可匹配的版本. ...

最新文章

  1. arcgis里python窗口运行,在 Python 窗口中执行工具
  2. poj1144(割点)
  3. 最短编辑距离 python_最短编辑距离算法实现
  4. 字符定长文件Linux怎么生成,Linux中的more命令-逐页显示长文本文件
  5. 算法题:判断字符串是否为 ipv4 地址
  6. 如何使用js动态显示或隐藏DIV
  7. 一晚浓浓的程序员鸡汤,先干为敬
  8. C++/C--内存的四驱模型
  9. java mysql dump_mysql dump备份和恢复
  10. 4.软件架构设计:大型网站技术架构与业务架构融合之道 --- 操作系统
  11. iOS开发之YYKit丰富的组件,如:YYText
  12. Betwin实现电脑一分为二
  13. 一文搞懂 UndeclaredThrowableException
  14. Android模仿通讯录
  15. RESTful API及其设计思想
  16. 杜甫ndows 10怎么安排五笔,燕字五笔怎么打|燕子|杜甫|出处_诗词_综合试卷网_中国教育考试门户网站...
  17. 论军人的战斗意志—亮剑精神
  18. python制作搜索工具,深挖电脑里的小九九
  19. “大数据杀熟”杀的是你吗?
  20. 恋词题源报刊Unit5背诵

热门文章

  1. php屏蔽审查元素,js屏蔽F12审查元素,禁止修改页面代码等实现代码
  2. python输出运行时间_分析python程序运行时间的几种方法
  3. QT实现appendSheet
  4. OpenCV自动内存管理
  5. SpringBoot+Swagger整合API
  6. python数据结构-数组/列表/栈/队列及实现
  7. GAN诞生记:最火的AI模型,来自一群博士的酒后争吵
  8. Android架构初探
  9. 修改MYSQL数据库表的字符集
  10. 也说 Jquery+ASP.NET 实现开心网上传头像剪裁功能