day12 Pyhton学习
一.昨日内容回顾
1.函数名
函数名是一个变量名
可以作为集合类的元素
可以作为参数进行传递
def func(fn):
fn()
可以作为返回值返回
def outer():
def inner():
xxx
return inner
2.闭包
内层函数对外层函数的变量的访问
def outer():
a = 10
def inner():
print(a)
return inner
ret = outer()
xxxxxx
ret()
作用:
1.保护变量: 局部变量 自己函数中访问
2.让一个变量常驻内存
3.迭代器
特点:
1.省内存
2.惰性机制,不访问__next__() 就没有值
3.只能向前,不能反复
在数据中包含了__iter__() 可迭代对象
如果包含了__next__() 迭代器
"__iter__" in dir (数据)
"__next__" in dir (数据)
from collections import Iterable ,Iterator
Iterable :可迭代的
Iterator: 迭代器
isinstance(对象,类型)
二.今日主要内容
迭代器
__iter__() 获取迭代器
__next__() 下一个
生成器
本质就是迭代器
两种方式写生成器
1.生成器函数
2.生成器表达式
生成器函数
函数内部有yield,yield 返回 -> return
yield可以把函数分段执行
生成器函数被调用的时候,返回生成器
def dunc():
yield
g = func() - 得到生成器
生成器的用法和迭代器基本一致
__next__() 开始执行生成器,执行到yield,直到没有yield,抛出StopIteration
send() 可以给上一个yield传值
1.省内存
2.惰性机制,不访问__next__() 就没有值
3.只能向前,不能反复
各种推导式(简单)
列表推导式[结果 for循环 if判断]
字典推导式{key:value for循环 if判断}
集合推导式 {key for循环 if判断}
生成器表达式(最难)
(结果 for循环 if 判断)
惰性机制, 不访问__next__() 就没有值
只能向前,不能反复
day12 Pyhton学习的更多相关文章
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- pyhton 学习
官方学习文档 https://docs.python.org/3/tutorial/
- 20190320_head first pyhton学习笔记之构建发布
1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...
- Pyhton学习——Day2
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
- Pyhton学习——Day27
# hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...
- Pyhton学习——Day25
#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...
- Pyhton学习——Day24
# #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...
- Pyhton学习——Day23
#re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...
随机推荐
- vue-devtools-4.1.4_0.crx及Vue.js not detected的问题
谷歌-更多工具-扩展程序 Vue.js not detected的问题
- 一个极简Jsp工程下载
下载地址:https://files.cnblogs.com/files/xiandedanteng/SimpleJspWebApp20191227.zip 要得到war文件,右键点项目->Ex ...
- i春秋公益赛之signin
题目链接:https://buuoj.cn/challenges#gyctf_2020_signin 查看程序保护 只开了canary和NX保护,在IDA查看反编译出来的为代码时发现程序给了一个后门 ...
- Spring 框架(持续完善中)
目录标题 一.Spring 框架 Spring 是什么? Spring Framework 核心概念 了解Spring 框架的架构图 二.Spring Framework 之 IOC 开发的步骤流程 ...
- nginx安装步骤和加固方案
安装步骤参考https://blog.csdn.net/qq_37345604/article/details/90034424 出现以下页面就表示安装完成(默认是80端口,我修改成了8009端口,所 ...
- [LeetCode]617. 合并二叉树(递归)
###题目 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新 ...
- EAM在不同行业的应用
EAM在不同行业的应用 EAM从出现至今,已让很多资产密集型企业受益,甚至在一些行业领域里已经是公认的.不可或缺的管理方案,比如电力行业.轨道交通行业等.但由于不同行业或者企业业务类型不同,导致了资产 ...
- [go语言]-深入理解singleflight
目录 前言 singleflight使用场景 singleflight 简介 singleflight的使用 从singleflight的test最简单用法 验证并发重复请求 singleflight ...
- 安装Windows10操作系统 - 初学者系列 - 学习者系列文章
今天无事,就将安装操作系统的几种方式进行了总结( https://www.cnblogs.com/lzhdim/p/13719725.html ).这篇博文主要是对安装windows10操作系统的过程 ...
- Linux的MySQL安装方法
第一种: APT方式安装 在ubuntu系统的apt软件仓库中,默认存在MySQL数据库 在用户模式下使用命令: apt/apt-get install mysql-server mysql-cli ...