一 模块
模块是一系列功能的集合体,常见的模块形式分为三类:
1 自定义模块
2 第三方模块
3 内置模块
模块的四个通用类别
l 一个py文件就是一个模块
ll 一个包含有_init_.py文件的文件也是一个模块
lll 已被编辑为共享库或DLL的C或C++扩展
lv 使用c编写并链接到python解释器的内置模块
二 为什么要用模块
1 用第三方模块或者内置模块是一种拿来主义,可以极大提高开发效率
2 自定义模块可以减少代码冗余 将程序各部分组件共用的功能提取取出放到一个模块里,其他的组件通过导入的方式使用
三 如何用模块: 将模块导入到执行文件run.py中查看
4 首次导入模块会发生三件事:
l 会产生一个模块的名称空间
ll 执行spam.py文件的内容,将产生的名字丢到模块的名称空间里
lll 当前执行文件中拿到一个名字spam,该名字指向模块的名称空间
若为from 模块名 import ...则拿到一个spam中的定义的函数的名字如read1,其指向模块的名称空间中的read1
当模块名过长时,可用缩写代替,其格式为 import 模块名 as 缩写
需注意,模块名为纯小写加下划线
import
优点:引用模块的名字必须加前缀(模块名)指名道姓的问某一个名称空间要名字不会与当前名称空间中的名字冲突
缺点:引用模块中的名字必须加前缀(模块名)不够简洁
form....import
优点:引用模块中的名字不用加前缀 使用更简洁
缺点: 容易与当前执行文件名称空间中的名字冲突
如果把一个功能拿到文件外单独当作一个模块,而且使用时不能改变它的调用方式,或者追求简洁,使用from...import 的导用方式,但是要注意有无名称冲突
或者run文件在根目录,src在子文件夹core内,不改变环境变量,就需要使用from core import src 导入src模块,再用src.func1() 的方式调用功能。
四 模块的搜索路径
查找模块路径的优先级
1.内存
2.内置模块
3.sys.path(是以执行文件为准的)其第一个路径为执行文件所在文件夹
若所找的文件所在文件夹与执行文件所在文件夹同属一个根目录(即它们为同级时),用import syssys.path.append(r'所找文件所在地址/目录')
注意:若写的程序,只有一个执行文件,其它的文件虽然也可能导入模块,但是参照的环境变量是以执行文件为参照
五 区分python文件的两种用途__name__
1.用途
I.直接右键运行,当作执行文件
II.当作模块被导入
2.区分
I.当文件被当作执行文件时,__name__的值为__main__
II.当文件被当作模块导入时,__name__的值为模块名
六 软件开发的目录规范
-