一、列表推导式

#1、示例      数据量小
egg_list=[]
for i in range(10):
egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)]
#2、优点:方便,改变了编程习惯,

二、 生成器表达式

#1、把列表推导式的[]换成()就是生成器表达式

#2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性
chicken=('鸡蛋%s' %i for i in range(5))
print(chicken)
<generator object <genexpr> at 0x10143f200>
next(chicken)
#'鸡蛋0'
list(chicken) #因chicken可迭代,因而可以转成列表
#['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',] #3、优点:省内存,一次只产生一个值在内存中,主要应用数据量大

三、 模块介绍

1、什么是模块?

常见的场景:
  一个模块就是一个包含了一组功能的集合体,比如spam.py(任意的名字,但是前提是不要和内置函数一样),
模块名为spam,可以通过import spam使用。 在python中,模块的使用方式都是一样的,但其实细说的话,模块可以分为四个通用类别:    1、使用python编写的.py文件   2、已被编译为共享库或DLL的C或C++扩展   3、把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)   4、使用C编写并链接到python解释器的内置模块

2、为何要使用模块?

  1、从文件级别组织程序,更方便管理

  2、拿来主义,提升开发效率

四、使用模块之import

1、import的使用  

  模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行

  import语句是可以在程序中的任意位置使用的,且针对同一个模块很import多次,为了防止你重复导入,

  python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句)

2、在第一次导入模块时会做三件事,重复导入会直接引用内存中已经加载好的结果

  1、为源文件创建新的名称空间

  2、执行模块对应文件,将产生的名字存放于1中的名称空间

  3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间

3、被导入模块有独立的名称空间

  每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,

这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突

4、为模块名起别名

  为已经导入的模块起别名的方式对编写可扩展的代码很有用,在被导入函数后加as再加上新起的别名

五、 使用模块之from ... import...

1、from...import...的使用

 from 模块名字 import 具体的函数名,或者变量名字

2、from...import 与import的对比

唯一的区别就是:使用from...import...则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了、无需加前缀:spam.

from...import...的方式有好处也有坏处
好处:使用起来方便了
坏处:容易与当前执行文件中的名字冲突

3、也支持as,一行导入多个名字跟上一样

4、from...import *

#from 模块名字 import * 把模块中所有的不是以下划线(_)开头的名字都导入到当前位置

#大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差,在交互式环境中导入时没有问题。

 可以使用__all__来控制*(用来发布新版本)

__all__=[常用的函数名] #你自己的模块方法,想规定别人导入多少,就可以导入多少

六、 py文件区分两种用途:模块与脚本

编写好的一个python文件可以有两种用途:
一:脚本,一个文件就是整个程序,用来被执行
二:模块,文件中存放着一堆功能,用来被导入使用
python为我们内置了全局变量__name__,
当文件被当做脚本执行时:__name__ 等于'__main__'
当文件被当做模块导入时:__name__等于模块名
作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if __name__ == '__main__':

七、模块搜索路径

模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

官网解释:

#官网链接:https://docs.python.org/3/tutorial/modules.html#the-module-search-path
搜索路径:
当模块被导入时
解释器首先会从内建模块中寻找该名字
找不到,则去sys.path中找该名字 sys.path从以下位置初始化
1 执行文件所在的当前目录
2 PTYHONPATH(包含一系列目录名,与shell变量PATH语法一样)
3 依赖安装时默认指定的 注意:在支持软连接的文件系统中,执行脚本所在的目录是在软连接之后被计算的,换句话说,包含软连接的目录不会被添加到模块的搜索路径中 在初始化后,我们也可以在python程序中修改sys.path,执行文件所在的路径默认是sys.path的第一个目录,在所有标准库路径的前面。
这意味着,当前目录是优先于标准库目录的,需要强调的是:我们自定义的模块名不要跟python标准库的模块名重复。

python全栈开发- day14列表推导式、生成器表达式、模块基础的更多相关文章

  1. python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

  2. python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))

    python全栈开发笔记第二模块   第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用      有一个需求 : 从文件中读取所有联 ...

  3. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  4. python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)

    python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...

  5. python全栈开发day13-迭代器、生成器、列表推导式等

    昨日内容:函数的有用信息.带参数的装饰器.多个装饰器修饰一个函数 迭代器 可迭代对象:内部含有__iter__方法 迭代器 定义:可迭代对象.__iter__()就是迭代器,含有__iter__且__ ...

  6. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  7. Python的高级特性2:列表推导式,生成器与迭代器

    一.列表推导式 1.列表推导式是颇具python风格的一种写法.这种写法除了高效,也更简短. In [23]: {i:el for i,el in enumerate(["one" ...

  8. python之生成器(~函数,列表推导式,生成器表达式)

    一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...

  9. python基础-三元表达式/列表推导式/生成器表达式

    1.三元表达式:如果成立返回if前的内容,如果不成立返回else的内容 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' ...

随机推荐

  1. 孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块

    孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.datetime模块 dateti ...

  2. 常见数据结构图文详解-C++版

    目录 简介 一.数组 1. 静态数组 array 2. 动态数组 2.1. vector 2.2. priority_queue 2.3. deque 2.4. stack 2.5. queue二.单 ...

  3. 爬虫python

    最近看到电影,也看了很多的评论,想了解下大多人对相关电影的评论,正好也在学习Python,就利用其爬虫的强大能力,这里利用Python3.6.1 下面是相关代码: #coding:utf-8 __au ...

  4. PHP文件操作函数及文件指针理解

    知识点: 一.fopen(),文件打开函数,读写参数有: 1.R  : 只读,指针在文件开头 2.r+:读写,指针同上 3.W :只写,写入前会删除文件内容,然后指针回到文件开头,文件不存在则创建 4 ...

  5. C# 在子窗体调用父窗体的值(转)

    1.在父窗体中 public delegate void SetVisiableHandler();//定义委托类型 注意此委托定义在namespace下一级,在form类外 private void ...

  6. 省选算法学习-回文自动机 && 回文树

    前置知识 首先你得会manacher,并理解manacher为什么是对的(不用理解为什么它是$O(n)$,这个大概记住就好了,不过理解了更方便做$PAM$的题) 什么是回文自动机? 回文自动机(Pal ...

  7. Password [分块]

    题面 $n,m,x \leq 10^5$ 思路 首先$n=2$做法很多,不讲了 $n=3$的时候,分块维护两个东西:每一个数出现次数的前缀和,和出现次数的出现次数的前缀和(说的有点绕,但是应该挺好理解 ...

  8. java泛型的一些解释

    public <A extends Annotation> A getAnnotation(Class<A> annotationClass)我们经常在帮助文档中看到这样的方法 ...

  9. JS实现 java的Map

    Map = function () { this.objects = new Object(); // 加入元素 this.put = function (key, value) { this.obj ...

  10. Linux下hdparm硬盘测速

    在Linux下可以使用hdparm对硬盘进行测试或者查看硬盘的相关信息.这样你就知道了硬盘读写速度. Hdparm功能说明:显示与设定硬盘的参数. 语 法:hdparm [-CfghiIqtTvyYZ ...