# 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. Django(完整的登录示例、render字符串替换和redirect跳转)

    day61 1. 登录的完整示例                       复习:         form表单往后端提交数据需要注意哪三点:  五一回来默写    <-- 谁写错成from谁 ...

  2. 用xshell ssh连接测试服务器时候出的问题

    问题还原:用ssh连接测试服务器 给我结结实实报了个错 FBIwarning: ------------------------------------------------------------ ...

  3. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一

    好吧,现在我们假设你已经安装好了VS Code开发工具..Net Core 2.0预览版的SDK dotnet-sdk-2.0.0(注意自己的操作系统),并且已经为VS Code安装好了C#扩展(在V ...

  4. 《JAVA与模式》之建造模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式.建造模式可以将一个产品的内部表象(internal representation ...

  5. Swinject 源码框架(一):基本原理

     核心是 Container类.它提供了两类方法,register 和 resolve. 为了找到在 resolve 时,能够找到对应的方法,内部维护了一个叫做services 的字典.key 是根 ...

  6. linux文件系统底层原理

    Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 底层原理图: 在讲解各个 ...

  7. (转)IBM AIX系统为rootvg实现镜像

    IBM AIX系统为rootvg实现镜像 AIX系统安装的时候,没有选择安装镜像,因此在系统安装完成后,出于安全方面的考虑,决定为rootvg创建镜像. 工具/原料 AIX rootvg lspv c ...

  8. 编写Android程序Eclipse连不上手机。

    主要问题有: 1.开发者选项没有开启 2.设备管理器中MTP有黄色小叹号 3.ADB异常. 问题1容易解决. 问题2,3困扰了我很长时间,网上的很多解决方法是下载安装MTP驱动,或者直接右击更新驱动. ...

  9. Android硬件抽象层(HAL)深入剖析(三)【转】

    前面分析了android HAL层是如何搜索硬件模块的动态共享库的,其实就是在"system/lib/hw/"或者"/vendor/lib/hw/"这两个路径下 ...

  10. linux内核移植过程问题总结

    移植内核:2.6.30.4内核根目录下的.config为当前配置内核的且已经配置好的内核配置.make zImage以此为依据配置内核的过程:cd linux-2.6.30.4(进入Linux根目录) ...