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__())
python学习之老男孩python全栈第九期_day013知识点总结的更多相关文章
- python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法
一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...
- python学习之老男孩python全栈第九期_day023知识点总结——类和对象命名空间、组合
一. 类和对象命名空间类里 可以定义两种属性: 1. 静态属性 2. 动态属性 class Course: language = 'Chinese' def __init__(self, teache ...
- python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块
一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...
- python学习之老男孩python全栈第九期_day017知识点总结——初识递归、算法
一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n ...
- python学习之老男孩python全栈第九期_day010知识点总结
def qqxing(l = []): # 可变数据类型 l.append(1) print(l)qqxing() # [1]qqxing([]) # [1]qqxing() # [1, 1]qqxi ...
- python学习之老男孩python全栈第九期_day007知识点总结
基础数据类型汇总 1. str 2. int 3. list 4. bool 5. dict (1) fromkeys Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对 ...
- python学习之老男孩python全栈第九期_day001知识点总结
1. Python2与Python3的区别: Python2:源码不标准,混乱,重复代码太多: Python3:统一标准,去除重复代码. 编码方式: python2的默认编码方式为ASCII码:pyt ...
- python学习之老男孩python全栈第九期_day014知识点总结
# 迭代器和生成器# 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的# 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir ...
- python学习之老男孩python全栈第九期_day016知识点总结
'''数据类型:intbool... 数据结构:dict (python独有的)listtuple (pytho独有的)setstr''' # reverse() 反转l = [1,2,3,4,5]l ...
随机推荐
- MySQL(ORM框架)
day63 参考:http://www.cnblogs.com/wupeiqi/articles/5713330.html SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件, ...
- hdoj1072 Nightmare(bfs)
题目大意: 在迷宫中有一个炸弹,过六个单位时间就会爆炸,要你求一个起点到迷宫的终点的最短距离,迷宫中有时间重置器,当你走到这个格子,炸弹的爆炸时间重新置为0,迷宫中标识为墙壁的格子不能走,到达任意一个 ...
- js事件委托 jQuery写法
http://www.cnblogs.com/liugang-vip/p/5616484.html 不是抄的,这篇文章写的细 这是js 事件委托写法 <!DOCTYPE html> < ...
- redis内存监控与回收
Redis有自己的内存分配器,当key-value对象被移除时,Redis不会马上向操作系统释放其占用内存.redis之所以这样的设计有两个原因. OS可能会将释放内存交换到虚拟内存,但OS的虚拟内存 ...
- Java内存模型Cookbook
前言 指令重排 内存屏障 多处理器 指南 前言 这是一篇用于说明在JSR-133中制定的新Java内存模型(JMM)的非官方指南. 这篇指南提供了在最简单的背景下各种规则存在的原因,而不是这些规则在指 ...
- day 53 Django form 组件 autu 组件
https://github.com/Endless-Clould/homework/tree/master/auto_zujian ---恢复内容开始--- 前情提要: Django 组件 的 fo ...
- 归并排序的理解和实现(Java)
归并排序介绍 归并排序(Merge Sort)就是利用归并的思想实现的排序方法.它的原理是假设初始序列含有fn个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n2\fr ...
- POJ 1015
#include<iostream> #include<algorithm> #define MAXN 201 #define count C_ount using names ...
- AngularJS入门之Services
关于AngularJS中的DI 在开始说AngularJS的Service之前,我们先来简单讲讲DI(Dependency Injection,通常中文称之为“依赖注入”). DI是一种软件设计模式, ...
- Hadoop集群维护
HDFS小文件问题及解决方案:http://dongxicheng.org/mapreduce/hdfs-small-files-solution/ Hadoop升级方案(一):Hadoop 1.0内 ...