生成器表达式就是将列表生成式中的[]换成(),产生一个迭代器对象
什么是模块?
模块就是一系列功能的集合体
模块分为四个通用的类别:
1:使用Python编写的.py文件
2.已被编译为共享库或dll的c或c++拓展
3.把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件称之为包)
4.使用C编写并链接到Python解释器的内置模块
模块有三种来源:
1.内置模块
2.第三方模块
3.自定义模块
2.为什么要用模块?
1.使用内置的或者第三方的模块好处是:拿来主义,极大地提升开发效率
2.使用自定义的模块好处是:将程序各部分组件共用的功能提取取出放到一个模块里,其他的组件通过导入的方式使用该模块
该模块即自定义的模块,好处是减少代码冗余
首次导入模块会发生三件事
1.会产生一个模块的名称空间
2.执行模块文件的内容将产生的名字丢到模块的名称空间里
3.在当前执行文件中拿到一个名字,改名字指向模块的名称空间
之后的导入会直接引用首次导入的成果
import总结
优点:指名道姓的取出某个名称空间的名字不会与当前执行文件名称空间中的名字冲突
缺点:引用模块中的名字必须加前缀(模块名.)使用不够简洁
from import总结:
优点:引用模块中的名字不用加前缀,使用更为简洁
缺点:容易与当前执行文件名称空间中的名字冲突
查找模块路径的优先级
1.内存
2.内置模块
3.sys.path(是以执行文件为准)
当文件被当做执行文件执行时__name__的值为__main__
当文件被当做模块导入时__name__的值为模块名
一个模块只能被导入一次,