• 10函数名的应用,闭包,和迭代器


    1、函数名的应用:

      函数的命明规范和变量是一样的

      函数名即变量名

      应用如下:

     1         可以作为列表中的元素进行存储
     2         def func1():
     3             pass
     4         def func2():
     5             pass
     6         lst = [func1,func2]
     7         for el in lst:
     8             el()
     9         可以作为参数传递给函数
    10         def func():
    11             pass
    12         def proxy(fn):
    13             fn()
    14         proxy(func)
    15         可以作为函数的返回值
    16         def func():
    17             def inner():
    18                 pass
    19             return inner
    20         func()()

    2、闭包

      闭包:在内层函数中访问外层函数的局部变量

      作用:

        1、可以保护变量不受外界影响

        2、可以让变量常驻内存,不会被释放。

      写法:    

     1             def outer():
     2                 a = 10
     3                 def inner():
     4                     print(a)
     5                 return inner
     6             正确使用姿势:
     7                 def outer():
     8                     a = 10 # 假设是一个很耗时的东西
     9                     def inner():
    10                         print(a)
    11                     return inner
    12                 outer()()
    13                 outer()()   ---错误使用姿势
    14                 --------------
    15                 ret = outer()
    16                 ret()
    17                 ret()    -----正确使用姿势

    3、迭代器

      for循环的本质就是迭代器。

      可以用来遍历列表,字符串,元祖...可迭代对象

      可迭代对象:Iterale,里面有__iter__(),没有__next__()

      迭代器:Iterator,里面有__iter__(),还有__next__()

      迭代器特点:

        1、只能向前

        2、惰性机制

        3、省内存

      for循环的内部机制(即迭代器执行机制)

     1             1、首先获取到迭代器
     2             2、使用while循环获取数据
     3             3、it.__next__()来获取数据
     4             4、处理异常try:xxx except StopIteration:
     5 
     6             it = xx.__iter__()
     7             while 1:
     8                 try:
     9                     data = it.__next__()
    10                     xxxxxx
    11                 except StopIteration:
    12                     break
  • 相关阅读:
    什么时候用resultMap,什么时候用resultType?
    Cannot create PoolableConnectionFactory解决思路
    去除list集合中重复项的几种方法-转载
    ORA-02298 定位问题
    命令行退出MySQL和登录MySQL
    CX4-480服务器数据恢复过程(服务器数据恢复通用方法)
    也谈腾讯云的静默损坏
    raid5阵列两块硬盘离线怎么解决
    服务器卷删除初检报告/数据恢复成功率分析
    服务器两块硬盘离线如何恢复数据
  • 原文地址:https://www.cnblogs.com/cbslock/p/11149501.html
Copyright © 2020-2023  润新知