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
  • 相关阅读:
    Spring中文文档
    学装饰器之前必须要了解的四点
    三元运算符
    functools 中的 reduce 函数基本写法
    filter 函数基本写法
    map 函数基本写法
    迭代器和可迭代对象区别
    斐波那契数列进一步讨论性能
    无论传入什么数据都转换为列表
    将每一个分隔开的字符的首字母大写
  • 原文地址:https://www.cnblogs.com/d9e84208/p/10587371.html
Copyright © 2011-2022 走看看