模块与包
【定义模块】
【发布模块】
【安装模块——使用自定义模块】:
1,将模块放在指定(环境变量 Path下的目录)的文件夹下
Python解释器会搜索系统环境变量中的目录寻找模块文件。可以把自己的模块放到系统环境变量中的某一个目录——site-packages 是python公认的存储模块文件的路径,我们应该尽量把自定义模块放到这个路径对应的文件夹下
2,将模块放在某一位置,然后告诉Python解释器去哪寻找
可以把模块的存储路径添加到系统环境变量Path。但是某些情况下不能修改系统的环境变量!更加标准的做法是把模块的存储路径放到PYTHONPATH变量里,多个路径以:或者;分割。
【导入模块】
模块的名称与模块文件的名称相同
模块是程序,在第一次导入时,模块中定义的代码会被执行/解析。
导入模块并不意味着在导入时执行某些操作,导入的主要作用是定义
互相导入不会陷入死循环——每个模块只能导入一次。
【重新导入模块】:reload
【.pyc文件与.py文件】:.py格式的是源文件,.pyc格式的是源文件经过编译后的文件,可以加快编译速度。当源文件更新时,会重新编译。注意,不能删除源文件只保留.pyc文件;可以删除.pyc文件,解释器发现没有这个.pyc文件时,会重新编译生成此文件。
【.pyw文件】:GUI——图形界面相关的文件,以此格式存储,可以避免弹出控制台窗体(万恶的大黑框)
【在模块中加入测试代码】
直接执行模块文件时,__name__ == __main__
将模块文件作为模块导入时,__name__ == 模块的名字
利用上述特性,可以在模块文件中加入测试代码如下:这样当导入模块时测试函数不会被执行,而当单独执行模块文件时,则可完成模块测试
1 def hello(): 2 print “Hello World !” 3 4 def moduleTest(): 5 hello() 6 7 if __name__ == "__main__": 8 moduleTest()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【了解未知模块的内容】:
dir:列出对象的所有特性
__all__:定义模块的所有公有接口,在copy模块内部被设置,指定 import * 时导入哪些变量和函数。默认情况下 import * 回倒入所有不以下划线开头的全局名称
help:显示函数原型和文档字符串
__doc__:文档字符串
阅读源代码:__file__:查看文件的存储位置;一些模块文件可能是空的——已经融入到解释器中,或者是使用C语言写成的。
【将模块打包】:
包就是模块所在的目录,为了使这个目录能成为包,需要在目录内创建 __init__.py文件。
__init__.py 中的内容会在导入包时被导入
以Keras为例:Keras包中包含 models utils 等模块
1 import Keras #导入Keras包,此时 __init__.py 中的内容可以使用,子包中的内容不能使用 2 import Keras.models #导入 models 模块,使用 Keras.models.xxx 的方式访问模块中的内容 3 4 from Keras import utils #导入 utils 模块,使用 utils.xxx 的方式访问模块中的内容 5 from Keras.models import Sequential #直接使用 Sequential()函数
以上语句的执行顺序没有要求,没有必要一定先执行 import Keras 再执行 import Keras.models