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 ...
随机推荐
- Breadth-first Search-690. Employee Importance
You are given a data structure of employee information, which includes the employee's unique id, his ...
- 合服导致 globalserver 起不来的问题
globalserver 报错 RMIInitArmyBackObject InitError 根据报错信息一路追查下来,发现某个帮派的数据解析 json 的时候报错.监视变量,找出这段字符串,大致结 ...
- 二,mysql优化——sql优化基本概念
1,SQL优化的一般步骤 (1)通过show status命令了解各种SQL执行效率. (2)通过执行效率较低的SQL语句(重点select). (3)通过explain分析低效率的SQL语句的执行情 ...
- Flask从入门到精通之在视图函数中处理表单
在新版hello.py 中,视图函数index() 不仅要渲染表单,还要接收表单中的数据.更新后的index() 视图函数如下: @app.route('/') def index(): name = ...
- Flask从入门到精通之Flask-Bootstrap的使用
Bootstrap(http://getbootstrap.com/)是Twitter 开发的一个开源框架,它提供的用户界面组件可用于创建整洁且具有吸引力的网页,而且这些网页还能兼容所有现代Web 浏 ...
- MySQL 高级查询操作
目录 MySQL 高级查询操作 一.预告 二.简单查询 三.显示筛选 四.存储过程 五.查询语句 1.作为变量 2.函数调用 3.写入数据表 备注 附表一 附表二 相关文献 博客提示 MySQL 高级 ...
- linux对文件赋权限的命令chmod的详细说明
指令名称 : chmod使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案调 ...
- Mybatis常用知识点总结
1. #{}和${}的区别是什么? ${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc ...
- jQuery选择器(基础及应用)
jQuery选择器 jQuery的核心思想就是:选取元素,对其操作. jquery选择器对开发有以下优势:写法简洁,不需要考虑主流浏览器是否支持某些选择器(jquery支持css1-css3),不需要 ...
- 字蛛fontSpider的使用
字蛛官方文档 http://font-spider.org/index.html 首先安装全局包 npm install font-spider -g 然后下载字体 ,本次需要的是 "造 ...