当前位置: 首页 > news >正文

成都什么是网站建设网站建设基础

成都什么是网站建设,网站建设基础,wordpress关键词有用吗,微信登录网址零、可迭代对象 可迭代对象是迭代器和生成器的基础,简单来说,可以使用for循环遍历的对象就是可迭代对象,比如常见的list、set和dict。在python中,可迭代对象是指实现了__iter__()方法的对象,当我们使用for循环遍历一个…

零、可迭代对象

  1. 可迭代对象是迭代器和生成器的基础,简单来说,可以使用for循环遍历的对象就是可迭代对象,比如常见的list、set和dict。
  2. 在python中,可迭代对象是指实现了__iter__()方法的对象,当我们使用for循环遍历一个可迭代对象时,实际上是调用该对象的__iter__()方法获取一个迭代器,并使用该迭代器迭代访问对象的元素。

一、Python的迭代器、生成器

  • 迭代器

  1. 迭代器是python中实现迭代协议的一个对象,本质上是一种python数据结构,它实现了__iter__()和__next__()等方法,其中,__iter__()方法返回迭代器自身,__next__()方法返回序列中的下一个值。
  2. 迭代器能够支持for循环以及next()函数的调用。在每次迭代时,迭代器都会产生一个值,直到没有下一个值了,就会抛出StopIteration异常。
  3. 如何判断对象是否是迭代器,和判断是否是可迭代对象的方法差不多,只要把Iterable换成Iterator。
  • 生成器

1.	def spam():
2.	    yield”first”
3.	    yield”second”
4.	    yield”third”
5.	for x in spam:
6.	Print(x)
7.	-----结果如下-----
8.	first
9.	second
10.	third

  1. 我们创建列表的时候,受到内存限制,容量肯定是有限的,而且不可能全部给他一次枚举出来。Python常用的列表生成式有一个致命的缺点就是定义即生成,非常的浪费空间和效率。
  2. 若列表元素可以按照某种算法推算出来,那么在循环的过程中不断推算中后续的元素,这样就不必创建完整的list,从而节省大量的空间。在python中,这种一边循环一边计算的机制,称为生成器:generator。与字典和集合相反,生成器是典型的时间换空间的例子。
  3. 创建一个generator,最简单的方法就是改造列表生成式,还有就是生成器函数,通过def定义,然后使用yield来支持迭代器协议,比迭代器写起来更简单。
  4. 进行函数调用的时候,返回一个生成器对象。在使用next()调用的时候,遇到yield就返回,记录此时的函数调用位置,下次调用next()时,从断点处开始。
  5. 我们完全可以像使用迭代器一样使用generator,当然除了定义,定义一个迭代器,需要分别实现iter()和next()方法,但generator只需要yield就可以。

二、生成器、迭代器的区别

虽然生成器和迭代都可以用于for循环的遍历,但它们之间有明显的不同之处:

1、实现方式不同

生成器使用了yield语句来实现,而迭代器使用了魔法函数__iter__()和__next__()来实现。

2、生成方式不同

生成器可以逐个生成序列中的值,而迭代器一次性生成整个序列,将其存储在内存中。

3、执行方式不同

生成器可以像函数一样调用,可以在每次迭代的时产生和恢复值,而迭代器则按照序列的下一个元素依次执行。

4、功能不同

生成器主要用于生成序列,而迭代器主要用于遍历序列。

三、什么是装饰器?

装饰器本质上是还是一个函数,它可以让已有函数不做任何改动的情况下增加功能。

装饰器允许通过将现有函数传递给装饰器,从而向现有函数添加一些额外的功能,该装饰器将执行现有函数的功能添加的额外功能

四、函数装饰器有什么作用

装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能。装饰器的返回值也是一个函数对象,它适用于有切面需要的场景。比如:插入日志、性能测试、事务处理、缓存、权限校验等场景,装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

 1. def first(fun):2.     def second():3.         print('start')4.         fun()5.         print('end')6.         print fun.__name__7.     return second8.  9. def man():
10.     print('i am a man()')
11.  
12. f = first(man)
13. f()

等价于

 1.  1. def first(func):2.  2.     def second():3.  3.         print('start')4.  4.         func()5.  5.         print('end')6.  6.         print (func.__name__)7.  7.     return second8.  8.  9.  9. @first
10. 10. def man():
11. 11.     print('i am a man()')
12. 12.  
13. 13. man()
14. ------ 结果 ------
15. Start
16. I am a man()
17. End
18. man

 上面的这段代码和之前的代码的作用一模一样。区别在于之前的代码直接“明目张胆”的使用first函数去封装函数,而上面这个用了【语法糖】来封装man函数。在上述代码中【@first】在man函数的上面,表示对man函数使用first装饰器。【@】是装饰器的语法,【first】是装饰器的名称。

五、一句话解释什么样的语言能够使用装饰器

函数可以作为参数传递的语言,可以使用装饰器。

http://www.yayakq.cn/news/435431/

相关文章:

  • 茂名营销型网站建设北京网站seo技术厂家
  • 免费发布信息平台有哪些郑州seo关键词优化公司
  • 网站运营之怎样做好seo优化有没有做的很炫的科技型网站
  • 济宁手机网站开发公司3d效果图设计制作
  • 做网站动态效果心得wordpress文档结构
  • 网站管理员工作总结万网如何建设网站
  • 家具商务网站策划案网站移动端自适应
  • asp.net 网站开发实例医院网站建设基本功能
  • 源码出售平台电影站的seo
  • 网站开发费用计入科目视频制作用什么软件
  • 如何不花钱开发网站昆明网站建设天软科技
  • 技术支持 东莞网站建设鞋子网站后台账号密码
  • 怎样注册网站淘宝上做网站的生意怎么样
  • 国内免费图片素材网站建设网站哪家专业
  • 中国核工业第五建设公司网站怎样在网上做环保设备网站
  • 电子商务网站推广方法制作二维码教程
  • 用prestashop做网站做服务器的网站都有哪些功能
  • 众讯 网站建设平安企业邮箱登录入口
  • 网站的建设主题网站想做个链接怎么做
  • 怎么做营销型网站下面什么不属于网络推广方法
  • 做兼职一般去哪个网站好北京全包圆装修公司好不好
  • 公司网站建设规划48互联网站建设
  • 淘客怎么做网站推广电子商务网站建设的论文
  • 珠海cp网站建设大型门户网站建设价格
  • 微信服务号可以做万网站么传媒公司logo设计创意
  • 百度竞价推广的优势网站seo诊断分析报告
  • 建站平台那个好关键词优化除了做网站还有什么方法
  • 南通公司建站模板北京海华城市建设学校网站
  • 做网站怎么样才能排在首页辽宁城乡建设招投标交易平台
  • 权威的徐州网站建设注册个人公司流程及费用