# 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__())

python学习之老男孩python全栈第九期_day013知识点总结的更多相关文章

  1. python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法

    一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...

  2. python学习之老男孩python全栈第九期_day023知识点总结——类和对象命名空间、组合

    一. 类和对象命名空间类里 可以定义两种属性: 1. 静态属性 2. 动态属性 class Course: language = 'Chinese' def __init__(self, teache ...

  3. python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块

    一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...

  4. python学习之老男孩python全栈第九期_day017知识点总结——初识递归、算法

    一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n ...

  5. python学习之老男孩python全栈第九期_day010知识点总结

    def qqxing(l = []): # 可变数据类型 l.append(1) print(l)qqxing() # [1]qqxing([]) # [1]qqxing() # [1, 1]qqxi ...

  6. python学习之老男孩python全栈第九期_day007知识点总结

    基础数据类型汇总 1. str 2. int 3. list 4. bool 5. dict (1) fromkeys Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对 ...

  7. python学习之老男孩python全栈第九期_day001知识点总结

    1. Python2与Python3的区别: Python2:源码不标准,混乱,重复代码太多: Python3:统一标准,去除重复代码. 编码方式: python2的默认编码方式为ASCII码:pyt ...

  8. python学习之老男孩python全栈第九期_day014知识点总结

    # 迭代器和生成器# 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的# 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir ...

  9. python学习之老男孩python全栈第九期_day016知识点总结

    '''数据类型:intbool... 数据结构:dict (python独有的)listtuple (pytho独有的)setstr''' # reverse() 反转l = [1,2,3,4,5]l ...

随机推荐

  1. class字节码结构(三)(字段集合的结构)

    <Java虚拟机原理图解>1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的 字段区:包括了字段计数器和字段数据区: 字段是指在类中定义的静态或者非静态的 ...

  2. ReentrantLock总体概括

    一.锁的实现原理: JAVA concurrent包下面的锁是通过AbstractQueuedSynchronizer内的Node类下面的state属性来实现的,并且锁的可重入属性也是通过state实 ...

  3. klee 测试一个简单的正则表达式匹配函数

    函数源代码位于 klee源码 的examples/regexp文件夹下面:c程雪源码文件名为  Regexp.c First Step: 使用clang编译器将c源代码转化为llvm位码形式.如果你的 ...

  4. rabbitmq系列一 之简单队列

    1. rabbitmq简介 rabbitmq是一个消息代理,或者讲是一个消息中间件.主要是用来接收和转发信息的,它是对消息不做任何处理的.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写 ...

  5. LFR benchmark graphs 人工网络生成程序

    人工网络生成程序,可在CSDN上免费下载 或者科学网这边也可以下载 参数 • n: number of vertices;• k: average degree;• maxk: maximum deg ...

  6. androidStudio 打包与混淆

    在gradle中通过makeJar打包 不同模块的gradle都支持打包功能,application module的build.gradle中引入的是com.android.application插件 ...

  7. 【java排序】 选择排序,插入排序,希尔算法

    一.选择排序 1.基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. 2.实例 3.算法 ...

  8. android 判断service是否正在运行

    public static boolean isServiceExisted(Context context, String className) { ActivityManager activity ...

  9. Root-NFS: Unable to get mountd port number from server, using default

    问题描述: 以前下载到开发板linux内核启动好好地,今天突然启动不了了,到达Root-NFS: Unable to get mountd port number from server, using ...

  10. 爬虫实战(二) 51job移动端数据采集

        在上一篇51job职位信息的爬取中,对岗位信息div下各式各样杂乱的标签,简单的Xpath效果不佳,加上string()函数后,也不尽如人意.因此这次我们跳过桌面web端,选择移动端进行爬取. ...