zoukankan      html  css  js  c++  java
  • 函数,闭包,迭代器

    函数名:函数名可以说是一个变量,但它是一个特殊的变量,因为当它与小括号配合使用时就会执行函数.

    1.函数名可以放在列表中使用:

     1 def one():
     2     print(6)
     3 def two():
     4     print(66)
     5 li=[one,two]
     6 for a in li:
     7     a()
     8 
     9 输出结果:
    10              6
    11              66

    2.函数可以当函数名的参数

     1 def one():
     2     print(6)
     3 def two(f):
     4     print(66)
     5     f()
     6 two(one)
     7 
     8 输出结果:
     9         66
    10         6

    3.函数可以作为函数的返回值:

     1 def one():
     2     print(6)
     3     def two():
     4         print(66)
     5     return two
     6 f=one()
     7 f()
     8 
     9 输出结果:
    10         6
    11         66

    闭包:内层函数对外层函数变量的引用

    python规定:如果你在内层函数中访问了外层函数的变量,那么这个变量在使用完并不会马上清空,它将会长期存储到内存中,可以方便你以后再次调用.

    1 def one():
    2     a=6
    3     def two():
    4         print(a)
    5     return two

    这种内层函数需要外层函数的变量时就产生了闭包,

    当程序检测到内部函数会用到外部函数的变量时,就会将变量存储到内存中,方便外层函数结束时,内层函数也能正常调用

    可迭代对象:Iterable,里面有__iter__()可以获取迭代器,没有__next__()  (注意每处下划线都是两个)

      迭代器:Iterator,里面有__iter__()可以获取迭代器,有__next__()

    用迭代器模拟for循环:

    1 #                        #列如我们要循环一个列表
    2 a=[1,2,3]
    3 li=a.__iter__()#首先获取到迭代器
    4 while 1:          #使用while循环获取数据
    5     try:            #尝试运行
    6         li2=li.__next__()    #通过迭代器获得一个数据
    7     except StopIteration:   #处理异常,只能处理写上的异常如(StopIteration)
    8         break                        #如果出现这种异常则结束
  • 相关阅读:
    sqllite小型数据库的使用
    winform打开本地html页面
    【app】自动化必备之adb使用
    【app】自动化环境搭建(Appium)for java
    【app】Hybrid?Native?不知道你就out了!
    589. N叉树的前序遍历
    590. N叉树的后序遍历
    897. 递增顺序查找树
    559. N叉树的最大深度
    108. 将有序数组转换为二叉搜索树
  • 原文地址:https://www.cnblogs.com/leo-tail-x/p/9456400.html
Copyright © 2011-2022 走看看