函数名的应用(第一类对象),闭包,迭代器

1.函数名的应用(第一类对象)

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

  函数名其实就是变量名

  可以作为列表中的元素进行储存.

  

def func1():
    pass
def func2():
    pass
lst = [func1,func2]
for el in lst:
    el()

  可以作为参数传递给函数.

  

def func():
      pass
def proxy(fn):
      fn()
proxy(func)

  可以作为函数的返回值

def func():
      def inner():
            pass
      return inner
func()()

2.闭包

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

  好处:

扫描二维码关注公众号,回复: 2674844 查看本文章

    1.保护你的变量不受外界影响

    2.可以让变量常住内存

  写法:

    

def outer():
     a = 10
     def inner():
           print(a)
     return inner

3.迭代器

  使用dir来查看该数据包含了哪些方法

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

  可迭代对象:Iterable,里面有__iter__()可以获取迭代器,没有__next__()

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

  迭代器特点:

      1.只能向前.

      2.惰性机制.

      3.省内存(生成器)

  for循环的内部机制.

      1.首先获取到迭代器.

      2.使用while循环获取数据

      3.it.__next__()来获取数据

      4.处理异常 try:xxx except StopIteration:

      

it = xx.__iter__()
while 1 :
        try:
            date = it.__next__()
            xxxxxx
        except StopIteration:
                break

猜你喜欢

转载自www.cnblogs.com/zbw582922417/p/9455865.html