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 # 结束循环

      

  • 相关阅读:
    框架
    css样式表。作用是美化HTML网页.
    表单的制作
    表格的制作
    常用标签的制作
    标签的制作
    poj2104(K-th Number)
    Codeforces Round #359 (Div. 2) D. Kay and Snowflake
    Codeforces Round #359 (Div. 2) C. Robbers' watch
    HDU3308(LCIS) 线段树好题
  • 原文地址:https://www.cnblogs.com/attila/p/10098533.html
Copyright © 2011-2022 走看看