Python模块是什么(超级详细)
为了方便调用将一些功能相近的模块组织在一起,或是将一个较为复杂的模块拆分为多个组成部分,可以将这些 .py 源程序文件放在同一个文件夹下,按照 Python 的规则进行管理,这样的文件夹和其中的文件就称为包,库则是功能相关联的包的集合。
例如,为了设计一套统一处理图片文件和数据的 Python 程序,可以考虑采用如下所示的包结构。
images/
__init__.py
formats/
__init__.py
jpg.py
png.py
bmp.pv
tif.pv
effects/
__init__.py
fade.py
fuzzy.py
其中,images 目录是顶层包名;__init__.py 用来声明该文件夹是一个 Python 包的源程序目录;formats 目录下存放对应不同文件格式的图片处理程序,格式名就是文件名;effects 目录下存放的是处理效果的模块。
在导入一个包时,Python 首先在当前包中查找模块,若找不到则在内置的 built-in 模块中查找,仍然找不到的话会根据 sys.path 中的目录来寻找这个包中包含的子目录。目录只有包含 __init__.py 文件时才会被认作是一个包,最简单的就是建立一个内容为空的文件并命名为 __init__.py。事实上 __init__.py 还应定义 __all__ 用来支持模糊导入。
可以使用以下语句查看当前系统的 Python 搜索路径:
import sys sys.path
上述代码的运行结果如下所示:
import sys
sys.path
[ , C://Programs//Python//Python37//python37.zip , C://Programs//Python37//DLLs , C://Programs//Python37//lib , C://Programs//Python37 , C://Programs//Python37//lib//site-packages ]
需要注意的是,Python 安装目录下的 Lib 文件夹内存放了内置的标准库,如图 1 所示。
图 1:Python 内置标准库存放在Lib目录下
Lib/site-packages 目录下(有的 Linux 发行版是 lib/dist-packages)则存放了用户自行安装的第三方模块(库),如图 2 所示。
图 2:用户自行安装的第三方模块(库)存放在 Lib/site-packages 目录下
导入模块一般采用 import 语句,import 语句的语法如下:
import 模块1 [, 模块2[, , 模块N]]
若只希望导入模块中指定的一部分,可以使用 from import 语句,其语法如下:
from 包或模块名 import 包或类或函数名1 [, 包或类或函数名2 [, 包或类或函数名N]]
例如导入上面的 png.py 模块,可以执行:
from images.formats import png
模块除了方法定义,一般还可以包括用来初始化这个模块可执行的代码,它们只在第一次被导入时才会被执行。一个模块被另一个程序第一次引入时,其主程序将运行。若希望引入模块时其中的某些程序块不执行,可以借助 __name__ 属性使这些程序块仅在该模块自身运行时执行。
例如:
if __name__ == __main__ : print( 程序自身在运行 ) else : print( 以模块方式运行 )
上述代码的运行结果如下所示:
if __name__ == __main__ :
print( 程序自身在运行 )
else :
print( 以模块方式运行 )
程序自身在运行
温馨提示:每个模块只会被导入一次。模块被导入一次之后即使再次执行 import 语句也不会重新导入,因此应该尽量避免出现循环/嵌套导入,如果出现多个模块都需要共享的数据,可以将共享的数据集中存放到某一个地方。
当模块内容发生了改变时可以使用 reload( ) 函数重新加载该模块,例如:
import importlib, Chap11 importlib.reload(Chap11)
上述代码的运行结果如下所示:
import importlib, Chap11
以模块方式运行
importlib.reload(Chap11)
以模块方式运行
(module Chap11 from C//Users//Administrator//.spyder-py3//Chap11.py )
每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。可以使用 dir() 函数查看一个模块内定义的所有名称,例如使用以下代码查看 Chap11.py 内定义的所有名称:
import Chap11 dir(Chap11)
上述代码的运行结果如下所示:
import Chap11
以模块方式运行
dir(Chap11)
[ __builtins__ , __cached__ , __doc__ , __file__ , __loader__ , __name__ , __package__ , __spec__ ]
23772.html
linuxpython相关文章
- pycharm如何安装python环境_pycharm怎么安装「建议收藏」
- python开发环境搭建,pycharm安装运行[通俗易懂]
- mt4 python_一个使用Python自动化交易外汇MT4脚本实现「建议收藏」
- python fileinput_Python之fileinput模块学习「建议收藏」
- python编程是什么-Python编程
- python语言一般用于什么_PYthon
- python分析人口出生率代码_国家统计局居然也能用的上Python?人口数据Python脚本了解一下?…[通俗易懂]
- python基础学习os、 glob模块
- python type error是什么意思_Python 报错 TypeError:’DoesNotExist’对象不可调用
- Python之ruamel.yaml模块详解(二)
- 软件测试|带你了解Python正则表达式模块(一)
- Python之selenium模块
- 使用Python执行Linux命令的方法(python调用linux命令)
- 一步步学习:利用Python连接MySQL数据库(python连接mysql数据库)
- Python操作MySQL数据库的必备模块mysqlpython(mysql_python)
- Python常用模块介绍