Python推导表达式、迭代器、生成器、模块和包
- 推导表达式
- yield用法
- 模块的概念和导入方法
- 包和包管理
推导表达式(利用for,一个一个地放入数据)
列表推导


集合推导


字典推导


迭代器
迭代
for 迭代变量 in 可迭代对象
每一次循环都会自动让 “迭代变量” 指向 “下一个元素”


生成迭代器的方法
iter() __iter__()

取值
next(iterator) iterator.__next__()
注意:如果迭代器值取完之后,会返回 StopIteration 错误


迭代器对象本身需要支持以下两种方法,它们一起构成迭代器协议
iterator.__iter__() iterator.__next__()
从可迭代对象生成一个迭代器
迭代器=iter(可迭代对象)
下个值=next(迭代器)
for实现原理

自定义迭代器


区分:可迭代对象 与 迭代器
可迭代对象没有 next 方法
迭代对象有 next方法
生成器
生成器不会一下子把所以内容生成出来,在需要用的时候用next()去生成
方法 一:列表推导式的 [ ] 改成 ( )


方法 二:在函数里面加上yield


yield运行规则
yiled 一个对象 1、返回这个对象 2、暂停这个函数 3、等待下次next重新激活
注意
yield 表达式只能在函数中使用
yield 表达式可以使函数成为一个生成器
yield 可以返回表达式结果,并且暂定函数执行,直到next激活下一个yield
简单点理解生成器就是一个迭代器
Python使用生成器对延迟操作提供了支持
所谓延迟操作,是指在需要的时候才产生结果,而不是立即产生结果,从而节省大量的空间,这也是生成器的主要好处
模块和包
可以使用三种方法导入
import 包名

from 包名 import 模块名1,模块名2,...

在同一目录下,可直接使用上面两种方法去导入
在不同目录下,需要使用 sys.path.append('path') 添加路径,把路径添加到 sys.path 中

模块
在python中,模块就是一个py文件
包和包管理
包概念:把很多模块放到一个文件夹里面,就可以形成一个包
包管理:当把很多模块放在文件中时,为了方便引用包中的模块,引入了包管理
__init__.py
在包管理中,加入此模块,则包名可以直接通过属性访问的方式,访问此模块内的对象
python2中必须加,pyhton3中不加也能使用
规范是要加上,文件内容可以为空
相对路径导入
在包管理中,可分别来导入同层和上一层的模块以通过 . (一个点) 和 .. (两个点)
使用方法:from .module(..module) import obj
引入作用:在包中,如果包中模块要导入同一包中的其他模块,就必须使用此方法导入
引入之后的影响:当一个模块中出现此导入方式,则该模块不能被直接运行,只能被导入
Python推导表达式、迭代器、生成器、模块和包的更多相关文章
- Python迭代器生成器,模块和包
1.迭代器和生成器 2.模块和包 1.迭代器 迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和__next__()方法. 其中__it ...
- python基础教程总结9——模块,包,标准库
1. 模块 在python中一个文件可以被看成一个独立模块,而包对应着文件夹,模块把python代码分成一些有组织的代码段,通过导入的方式实现代码重用. 1.1 模块搜索路径 导入模块时,是按照sys ...
- python杂记-4(迭代器&生成器)
#!/usr/bin/env python# -*- coding: utf-8 -*-#1.迭代器&生成器#生成器#正确的方法是使用for循环,因为generator也是可迭代对象:g = ...
- python学习笔记13(模块、包)
在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...
- python学习第十三天 -模块和包
模块和包 大家都知道,在计算机程序开发的过程中,随着程序代码越写越多,这样代码就会越不容易维护. 有时候为了好维护代码,把不同功能的函数放到不同的xx.py文件中. 在python中,一个.py文件就 ...
- Python 2.7 学习笔记 模块和包
我们来考虑下如下几种场景: 1.编写一个python程序,如果程序比较简单,则可以把代码放到一个python文件中.但如果程序功能比较多,可能需要多个python文件来组织源代码.而这些文件之间的代码 ...
- Python学习(十一) —— 模块和包
一.模块 一个模块就是一个包含了python定义和声名的文件,文件名就是模块名加上.py后缀. import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共 ...
- python 列表表达式、生成器表达式和协程函数
列表表达式.生成器表达式和协程函数 一.列表表达式: 常规方式示例: egg_list=[] for i in range(100): egg_list.append("egg%s" ...
- Python学习之路12☞模块与包
一 模块 1.1 什么是模块? 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 1.2 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前 ...
随机推荐
- windows提权
提权辅助 https://bugs.hacking8.com/tiquan/
- 剑指offer 24:二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 后序遍历,顾名思义根节点位于尾部,故可将 ...
- 并发相关基础知识 - MESI - JMM
一.CPU多级缓存 CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源,所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题.CPU多级缓存配置( ...
- 普通结果集ResultSet和离线结果集RowSet(四)
数据库的查询操作会得到一系列数据,JDBC API也提供了相关对象来接收查询结果集. 一.ResultSet java.sql.ResultSet接口表示数据库查询的结果集. JDBC提供以下连接方法 ...
- vue 指令和修饰符
1. v-textv-text主要用来更新textContent,可以等同于JS的text属性. <spanv-text="msg"></span> 这两者 ...
- 第05组 Alpha冲刺(4/4)
第05组 Alpha冲刺(4/4) 队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了 ...
- python有哪些优点跟缺点
显著的优点 1. 语言简洁优美,Java能实现的python都能实现(除安卓开发),python能实现的Java不一定能实现如(自动化运维,爬虫) 2. 跨平台,window, linux,mac通用 ...
- Educational Codeforces Round 76 (Rated for Div. 2) D. Yet Another Monster Killing Problem 贪心
D. Yet Another Monster Killing Problem You play a computer game. In this game, you lead a party of
- HTML连载43-还原字体和字号、文字界面
一.还原字体和字号 1.利用fireworks切片以及文本添加的功能可以用来定位我们想要的文字是什么字体,行高又是多少,但其实很low,是我们人工挑选出来的. 2.注意点:在企业开发中,如果一个盒子中 ...
- React: React的组件状态机制
一.简介 在React中,有两个核心的默认属性,分别是state和props.state会记录组件的状态,React根据状态的变化,会对界面做相应的调整或渲染.props则是数据流向属性,React通 ...