zoukankan      html  css  js  c++  java
  • 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 # 结束循环
    复制代码
  • 相关阅读:
    ftpserver / FTP model:PORT/PASV/EPRT/EPSV
    windows 环境下搭建electricSearch+kibana
    springBoot2.x整合 logback实现日志记录
    springBoot使用aop添加处理rest请求 打印请求时间 和请求参数
    springCloud 使用feign复制请求头调用其他服务 content-length不一致导致调用失败
    mysql查询重复用户最新的一条数据
    【开源】 开源社区
    【数据库】 SQL 使用注意点
    【数据库】 SQL 常用语句
    【数据结构】 List 简单实现
  • 原文地址:https://www.cnblogs.com/uiys/p/10673137.html
Copyright © 2011-2022 走看看