• python学习之老男孩python全栈第九期_day013知识点总结


    # l = [1,2,3]
    # 索引
    # 循环 for
    # list
    # dic
    # str
    # set
    # tuple
    # f = open()
    # range()
    # enumerate
    '''
    print(dir([])) # 告诉我列表的所有方法
    print(dir({})) # 告诉我字典的所有方法
    print(dir('')) # 告诉我字符串的所有方法
    # 求以上三个方法的交集
    ret = set(dir([]))&set(dir({}))&set(dir(''))
    print(ret)
    # 双下方法
    print([1].__add__(([2])))
    print([1]+ [2])
    # 判断是否可迭代
    print('__iter__' in dir(int))
    print('__iter__' in dir(bool))
    print('__iter__' in dir(list))
    print('__iter__' in dir(dict))
    print('__iter__' in dir(str))
    print('__iter__' in dir(set))
    print('__iter__' in dir(tuple))
    print('__iter__' in dir(enumerate([],1)))
    '''
    # 只要是能被for循环的数据类型就一定有__iter__方法
    # print([].__iter__()) # 一个列表执行了__iter__()之后的返回值就是一个迭代器
    # print(dir([]))
    # print(set(dir([].__iter__()))-set(dir([]))) # {'__next__', '__length_hint__', '__setstate__'}
    # print([1,2,'aa'].__iter__().__length_hint__()) # 元素个数
    # l = [1,2,3]
    # iterator = l.__iter__()
    # print(iterator.__next__())
    # print(iterator.__next__())
    # print(iterator.__next__())
    # 只要含有__iter__方法的都是可迭代的
    # [].__iter__() 迭代器 --> __next__() # 通过next就可以从迭代器中一个一个的取值
    # 只要含有__iter__方法的都是可迭代的 --> 可迭代协议
    # 迭代器协议 --> 内部含有__next__和__iter__方法的就是迭代器
    # print('__iter__' in dir([].__iter__()))
    # print('__next__' in dir([].__iter__()))
    # from collections import Iterable # iterable 可迭代的
    # from collections import Iterator # iterator 迭代器
    # print(isinstance([],Iterable)) # True 列表是可迭代的
    # print(isinstance([],Iterator)) # False 列表不是迭代器

    # 迭代器协议和可迭代协议
    # 可以被for循环的都是可迭代的
    # 可迭代的和迭代器都是什么样子的
    # 可迭代的内部都有__iter__方法
    # 迭代器一定是可迭代的,可迭代的不一定是迭代器
    # 可迭代的.__iter__() 方法就可以得到一个迭代器
    # 迭代器中的__next__()方法可以一个一个的获取值

    # for 循环其实就是在使用迭代器
    # iterator
    # 可迭代对象
    # 直接给你内存地址

    # 判断是不是迭代器,其实是为了使用for循环
    # 当我们遇到一个新的变量,不确定能不能for循环时,就判断它是否可迭代

    # 迭代器的好处:
    # 从容器类型中一个一个的取值,会把所有的值都取到
    # 可以节省内存空间 --> range(1000000000)
    # 迭代器并不会在内存中再占用一大块内存,而是随着循环,每次生成一个
    # 每次next,就给我一个
    # range
    # f = open()

    # l = [1,2,3,4,5]
    # iterator = l.__iter__()
    # while 1:
    # print(iterator.__next__())

    # 生成器
    # 生成器函数 --> 本质上就是我们自己写的函数
    # 生成器表达式

    # 普通函数
    # def generator():
    # print(123)
    # return 'a'
    # ret = generator()
    # print(ret)
    #----------------------------------------------------------------------------------------#
    # 生成器函数
    # 只要含有yield关键字的函数都是生成器函数,yield只能在函数里,且yield不能与return同时出现
    # def generator():
    # print(123)
    # yield 'a'
    # # 生成器函数:执行之后会得到一个生成器作为返回值
    # ret = generator()
    # print(ret)
    # print(ret.__next__())

    # def generator():
    # print(123)
    # yield 'a'
    # print(222)
    # yield 'b'
    # print(333)
    # yield [7,8,9]
    # ret = generator()
    # for i in ret:
    # print(i)
    # print(ret)
    # print(ret.__next__())
    # print(ret.__next__())
    # print(ret.__next__())

    def wahaha():
    for i in range(2000000):
    yield '娃哈哈%s'%i
    g = wahaha()
    count = 0
    for i in g:
    count += 1
    print(i)
    if count > 50:
    break
    print('*',g.__next__())
    print('**',g.__next__())
    print('***',g.__next__())
    print('***',g.__next__())


  • 相关阅读:
    优化TableView性能
    iOS应用性能调优的25个建议和技巧
    iOS-常见问题
    iOS开发——高级技术&地图功能的实现
    iOS开发——高级技术&调用地图功能的实现
    iOS开发——高级技术&通讯录功能的实现
    iOS开发——高级技术&系统应用于系统服务
    iOS开发——高级技术&蓝牙服务
    iOS开发——高级技术&社交服务
    ANDROID_MARS学习笔记_S01原始版_005_RadioGroupCheckBoxToast
  • 原文地址:https://www.cnblogs.com/lpgit/p/9338720.html
Copyright © 2020-2023  润新知