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                        #如果出现这种异常则结束
  • 相关阅读:
    17. 电话号码的字母组合
    12. 整数转罗马数字
    01-正则表达式基础
    前端SEO技巧
    node.js
    Vue.生命周期
    Vue小案例--过滤器的基本操作
    vue简单的计算器
    VSCode 自动刷新
    Vue.js学习
  • 原文地址:https://www.cnblogs.com/leo-tail-x/p/9456400.html
Copyright © 2011-2022 走看看