概述
可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块
模块表现形式为以.py结尾的代码文件
一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件。
模块的文件名就是模块的名字加上扩展名.py
每个模块都有自己的名称空间
Python程序架构
一个python程序通常包括一个顶层程序文件和其他的模块文件(0个,1个或多个)
顶层文件:包含了程序的主要控制流程
模块文件:为顶层文件或其他模块提供各种功能性组件
模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码,声明函数对象,而位于函数体内的代码直到函数被调用后才会执行。
模块的执行环境
模块是被导入的,但模块也可以导入和使用其他模块,这些模块可以用Python或其他编程语言写成
模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其他元素
如果打算以多个程序文件来组织你的Python程序,只有一个文件可以作为顶层执行文件,可以在顶层包含很多程序控制流,其他被导入的文件,都应该只包含类、变量、函数。
导入模块
在导入模块时只能使用模块名,而不是带.py后缀的模块文件名。
导入指定模块,会生成一个以模块名命名的名称空间。
impor语句导入模块:
import module
导入时可以给名称空间指定一个别名,如果使用别名,就只能使用别名调用了。
import module as module_alias
from-import 语句:
常用于只导入指定模块的部分属性至当前名称空间
from module import name1[,name2,...]
import 和 from 都是隐性赋值语句
import将整个模块对象赋值给一个变量名
from将一个或多个变量名赋值给导入此模块的模块中的同名对象,如果导入的变量和本地变量重名,则会覆盖本地的。
import的工作机制
1、寻找模块文件,2、编译成字节码,3、执行模块的代码来创建其所定义的对象。注意:模块只有在第一次导入时才会执行如上步骤;
后续的导入操作只不过是提取内存中已加载的模块对象,reload()可用于重新加载模块;
模块搜索
Python解释器在import模块时必须先找到对应的模块文件
程序的主目录
Python path目录
标准链接库目录
任何.pth文件的内容
这四个组件组合起来即为sys.path所包含的路径,而Python会选择在搜索路径中的第一个符合导入文件名的文件。
导入一个自定义模块的过程:
创建目录,用于保存自定义模块
mkdir /usr/local/mylib
进入python命令行,添加模块的搜索路径
import sys
sys.path
sys.path.append('/usr/local/mylib')
然后就可以直接用import导入自定义的模块了
Python执行被导入的模块的__name__属性是该模块的名称,而如果是直接执行该模块文件,模块的__name__属性是'main'。 下图的if段代码则是模块的测试代码,在模块被导入时是不会执行那段代码的。 只有直接运行才会执行。
添加模块文件的测试代码
Python 打包
包用于将一组模块归并到一个目录中,此目录即为包,目录名即为包名。
包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的Python应用程序执行环境
基于包,Python在执行模块导入时可以指定模块的导入路径
import dir1.dir2.mod1
第一个容器文件夹必须要在模块的搜索路径中,在子目录中需要建立一个__init__.py的文件,一般为空,在调用模块时只需要使用 import '子目录名'.模块名称
模块的相对路径引用
from .bar import fn
表示引用当前模块中bar子模块,中的fn函数;
from .. import fn2
表示引用当前模块中.init.py文件中的fn2函数;
注:如果用相对路径引入模块,那么这个文件不能被直接执行,只能做为模块被引入。
使用disutils发布模块
setup.py 中可用参数:
platforms:平台列表
license:许可证
py_modules:各模块名称组成的列表,此些模块可能位于包的根目录下(module name),也可能位于某子包目录中(subpkg1.module name)
执行打包
python setup.py sdist //源码包发行版
可以为sdist指定格式:
zip,gztar,bztar,ztar,tar
使用--formats= 指定格式
python setup.py bdist //二进制发行版
可以为sdist指定格式:
gztar,ztar,rpm,pkgtool,
获取帮助的方式:
Python setup.py --help
Python setup.py --help-commands:显示所有可以使用的命令的帮助
Python setup.py COMMAND --help: 获取特定命令的帮助
Python setup.py COMMAND --help-formats: 获取特定命令支持使用的格式
简单的安装工具:pip 、easy_install
安装包:
python setup.py install
build and install
python setup build:
--build-base=/path/to/buildir
lib,lib.platform
第三方模块的默认安装路径通常为:/usr/local/python27/lib/python2.7/site-packages
自定义安装路径:
--user= 指定安装在用户家目录下的某个路径中。
--prefix= 指定Python库文件的安装路径
--exec-prefix= 指定和Python无关的,由其他语言编写的模块安装路径
深度定制:
--install-purelib=/path/ 指定纯Python编写的库文件存放的位置
--install-platlib=/path/ 由其他语言所实现的库文件的存放位置
--install-lib=/path/ 不加区分的将所有库安装到指定位置
--install-scripts=/path/ 可执行文件的安装路径
--install-data= 指定数据文件的安装路径
--install-headers= 指定C头文件的安装路径
转载于:https://blog.51cto.com/tchuairen/1681757
最后
以上就是激情小霸王为你收集整理的Python 模块学习的全部内容,希望文章能够帮你解决Python 模块学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复