一 . 第一类对象

  函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用
  可以作为返回值返回 , 可以作为参数进行传递

def func():
def people():
print('金_卡戴珊')
print('oh,yes!')
print('oh,baby!')
return people
ret = func()
ret()

二 . 闭包

  闭包 -> 函数的嵌套
  内层函数对外层函数中的变量的使用

  好处:
  1. 保护变量不被侵害
  2. 让一个变量常驻内存

  如何通过代码查看一个闭包
  __closure__: 有东西就是闭包. 没东西就不是闭包

def wrapper():
name = "周杰伦" # 局部变量常驻与内存
def inner():
print(name) # 在内层函数中使用了外层函数的局部变量
     print(inner.__closure__) # 有东西就是闭包
return inner # 返回函数名
# inner()
ret = wrapper() # ret是一个内层函数
ret() # ret是inner, 执行的时机是不确定的, 必须保证里面的name必须存在

三 . 迭代器

  迭代器 -> 固定的思路. for循环
  一个数据类型中包含了__iter__函数表示这个数据是可迭代的
  dir(数据): 返回这个数据可以执行的所有操作

  判断迭代器和可迭代对象的方案(野路子)
  __iter__ 可迭代的
  __iter__ __next__ 迭代器

lst =['吴彦祖','谢霆锋','阿汤哥','郭达','岳云鹏']
it = lst.__iter__()
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())

  判断迭代器和可迭代对象的方案(官方)
  from collections import Iterable, Iterator
  isinstance(对象, Iterable) 是否是可迭代的
  isinstance(对象, Iterator) 是否是迭代器

lst = [1,2,3]
# print(lst.__next__()) print(isinstance(lst, Iterable)) # xxx是否是xxx类型的. True
print(isinstance(lst, Iterator)) # False it = lst.__iter__() # 迭代器一定可迭代, 可迭代的东西不一定是迭代器 print(isinstance(it, Iterable)) # xxx是否是xxx类型的. True
print(isinstance(it, Iterator)) # True

  模拟for循环

lst = ["海尔兄弟", "阿童木", "葫芦娃", "舒克贝塔", "大风车"]
# 模拟for循环 for el in lst:
it = lst.__iter__() # 获取到迭代器0
while 1: # 循环
try: # 尝试
el = it.__next__() # 那数据
print(el)
except StopIteration: # 出了错误, 意味着数据拿完了
break # 结束循环

  

最新文章

  1. python:字符串转换成字节的三种方式
  2. Nginx
  3. EASYUI 表单(FORM)用法
  4. MySQL 半同步复制
  5. shaerpoint designer 无法创建 visio 2013工作流
  6. Java虚拟机的内存组成以及堆内存介绍
  7. 【转载】extern "C"的用法解析(原博主就是抄百度百科的,不如另外一篇好)
  8. HDU1005 数列找规律
  9. Python join()方法
  10. IO流的应用————小型资源管理器
  11. 免费 Bootstrap 管理后台模块下载
  12. Linux/UNIX环境下Oracle数据库多实例开机启动脚本(转)
  13. iostat查看io情况(监控Linux的8种方式)
  14. 大数据系列修炼-Scala课程04
  15. Lumen 配置、重写、404错误等
  16. css FlexBox 弹性盒子常用方法总结
  17. websocket 的客户端 websocket-sharp
  18. Linux驱动之异步OR同步,阻塞OR非阻塞概念介绍
  19. Django admin模块无法调用css样式文件
  20. Qt中漂亮的几款QSS

热门文章

  1. 实现ppt幻灯片播放倒计时
  2. 转://Oracle中User和Schema的区别和联系
  3. linux命令之netstat
  4. 极端恢复时用到的几个隐藏参数 Oracle hidden corruption recovery parameters
  5. 启动项目显示:非法字符:'\ufeff' 和需要 class ,interface 或者 enum 错误
  6. ASP MD5
  7. NLog配置分享
  8. JMX,Jstatd做好JVM应用上线的最后一层保障
  9. 朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)
  10. Mac 小记 — 杂录