zoukankan      html  css  js  c++  java
  • 闭包/迭代器

    闭包

      写法:在外层函数声明一个变量
      在内层函数使用或者返回这个变量
      如果不用这个变量就不是闭包
        1.可以保护我的变量
        2.可以让一个变量常驻内层(但不是全局变量)
          这个执行时间不确定 所以你必须给我留着
        3.查看是否有闭包
          ret.__closure__
        4.闭包应用:
          保护变量 常驻内层
          ====>网络爬虫 应对带宽不稳定情况

    1 import urllib.request
    2 def outer():
    3     content = urllib.request.urlopen("http://www.luffycity.com").read().decode("utf-8")
    4 
    5     def inner():
    6         print(content)
    7     return inner
    8 outer()()
    View Code


    迭代器
       可迭代的:str/list/tuple/dict/set/open()/range()
        # dir() 可以查看某数据类型中可以执行的方法
      在字符串里面发现了__iter__,没有__next__
      在int里面没有__iter__,没有__next__
      在list里面也有__iter__

      # 所有包含了__iter__的东西都可以使用for循环
      都可以进行迭代

     1 # coding:utf-8
     2 # 迭代器 for循环的本质
     3 lst = [1, 2, 3, 4, 5, 6]
     4 it = lst.__iter__()
     5 
     6 while 1:
     7 try:
     8 print(it.__next__())
     9 except StopIteration:
    10 print("结束了")
    11 break
    View Code
  • 相关阅读:
    Canvas中的save方法和restore方法
    python之函数默认参数的坑
    python之函数名的应用
    python之golbal/nonlocal
    python之*的魔性用法
    python之函数的传参形参的第三种动态参数*args和**kwargs
    python之道09
    python之函数的初识
    python之道08
    python之99乘法表
  • 原文地址:https://www.cnblogs.com/d9e84208/p/10587371.html
Copyright © 2011-2022 走看看