首页 > 其他 > 详细

day4

时间:2017-10-07 22:27:01      阅读:284      评论:0      收藏:0      [点我收藏+]
一:复习
1.*args,**kwargs:
*args :接收溢出的位置参数
**kwargs:接收溢出的关键字参数
2.函数对象:可被当作数据传递
 - 函数可以当作参数传给另一个函数
- 一个函数的返回值也可以是一个函数(打破函数的层级限制)
 
3.名称空间和作用域
名称空间
 - 分三种
   内置名称空间:python解释器启动时则生效
  全局名称空间:执行python文件时生效
  局部名称空间:调用函数时,临时生效,函数调用结束则失效
 
- 加载顺序:先内置 再全局 ,最后有可能产生局部
 
- 查找名字顺序:选局部再全局,最后内置
 
作用域:
  -分两种
     全局作用域:全局存活,全局有效
     局部作用域:临时存活,局部有效
 
强调:作用域关系在函数定义阶段就已经固定,与调用位置无关
 
二:闭包函数定义:定义在函数内部的函数,特点是:包含对外部作用域而不是对全局作用域的引用,该函数就叫做闭包函数
 
三:装饰器
1.为什么要用装饰器:开放封闭原则,对扩展是开放的,对修改是封闭的
2.什么是装饰器
 -用来装饰他人,装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象
 -遵循的原则:1.不修改被装饰对象的源代码 2.不修改被装饰对象的调用方式
 - 目标是:在遵循原则1.2点前提下,为被装饰器对象添加上新功能
 
四:迭代器
1 什么叫迭代:迭代是一个重复过程,每次重复都是基于上一次的结果来的
2 为什么要用迭代器?
    l=[‘a‘,‘b‘,‘c‘]
    n=0
    while n < len(l):
        print(l[n])
        n+=1
    - 对于序列类型:字符串,列表,元组,可以使用基于索引的迭代取值方式,而对于没有索引的类型,如字典,
    集合、文件,这种方式不再适用,于是我们必须找出一种能不依赖于索引的取值方式,这就是迭代器
 
3 可迭代的对象:只要对象内置有__iter__方法,obj.__iter__
4 迭代器对象:对象既内置有__iter__方法,又内置有__next__,如文件对象
注意:可迭代对象不一定是迭代器对象,而迭代器对象一定是可迭代的对象
 
迭代器的优缺点:
    - 优点:
        提供了一种统一的迭代取值方式,该方式不再依赖于索引
        更节省内存
 
    - 缺点:
        无法统计长度
        一次性的,只能往后走,不能往前退,无法获取指定位置的值
五:生成器
定义:只要函数内部出现yield关键字,那么再调用该函数,将不会立即执行函数体代码,会到到一个结果
该结果就是生成器对象
 
 Yield的功能:
   -为我们提供了一种自定义迭代器的方式
  -  对比return,可以返回多次值,挂起函数的运行状态
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

day4

原文:http://www.cnblogs.com/xiawanwan/p/7636039.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!