• python--第一类对象,函数名,变量名


    一 . 第一类对象

      函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用
      可以作为返回值返回 , 可以作为参数进行传递

    复制代码
    def func():
        def people():
            print('金_卡戴珊')
            print('oh,yes!')
            print('oh,baby!')
        return people
    ret = func()
    ret()
    复制代码

    二 . 闭包

      闭包 -> 函数的嵌套
      内层函数对外层函数中的变量的使用

      好处:
      1. 保护变量不被侵害
      2. 让一个变量常驻内存

      如何通过代码查看一个闭包
      __closure__: 有东西就是闭包. 没东西就不是闭包

    复制代码
    def wrapper():
        name = "周杰伦" # 局部变量常驻与内存
        def inner():
            print(name) # 在内层函数中使用了外层函数的局部变量
         print(inner.__closure__) # 有东西就是闭包
        return inner  # 返回函数名
        # inner()
    ret = wrapper() # ret是一个内层函数
    ret() # ret是inner, 执行的时机是不确定的, 必须保证里面的name必须存在
    复制代码

    三 . 迭代器

      迭代器 -> 固定的思路. for循环
      一个数据类型中包含了__iter__函数表示这个数据是可迭代的
      dir(数据): 返回这个数据可以执行的所有操作

      判断迭代器和可迭代对象的方案(野路子)
      __iter__ 可迭代的
      __iter__ __next__ 迭代器

    复制代码
    lst =['吴彦祖','谢霆锋','阿汤哥','郭达','岳云鹏']
    it = lst.__iter__()
    print(it.__next__())
    print(it.__next__())
    print(it.__next__())
    print(it.__next__())
    print(it.__next__())
    print(it.__next__())
    复制代码


      判断迭代器和可迭代对象的方案(官方)
      from collections import Iterable, Iterator
      isinstance(对象, Iterable) 是否是可迭代的
      isinstance(对象, Iterator) 是否是迭代器

    复制代码
    lst = [1,2,3]
    # print(lst.__next__())
    
    print(isinstance(lst, Iterable)) # xxx是否是xxx类型的. True
    print(isinstance(lst, Iterator)) # False
    
    it = lst.__iter__()  # 迭代器一定可迭代,  可迭代的东西不一定是迭代器
    
    print(isinstance(it, Iterable)) # xxx是否是xxx类型的. True
    print(isinstance(it, Iterator)) # True
    复制代码

      模拟for循环

    复制代码
    lst = ["海尔兄弟", "阿童木", "葫芦娃", "舒克贝塔", "大风车"]
    # 模拟for循环 for el in lst:
    it = lst.__iter__() # 获取到迭代器0
    while 1: # 循环
        try: # 尝试
            el = it.__next__() # 那数据
            print(el)
        except StopIteration: # 出了错误, 意味着数据拿完了
            break # 结束循环
    复制代码
  • 相关阅读:
    soa
    最短路径分词
    Collector
    solr params.json
    oracle第一章
    记一次web项目总结
    java.util 类 TreeSet<E>
    自定义jstl标签库
    java二维数组简单初步理解
    Java中Array的常用方法
  • 原文地址:https://www.cnblogs.com/uiys/p/10673137.html
Copyright © 2020-2023  润新知