Python的模块与模块函数
1 模块与包
模块也即module,Python自己有很多模块,这些模块其实就是方法集合,相当于内部函数的集合。在进行一些比如文件操作、数学计算等,都有相应的模块。Python通过引入模块,在具体编写语言的时候可以直接调用与模块有关的函数,一般模块的文件类型是py。
包(package)是一个总目录,包目录下为首的一个文件便是__init__.py,定义初始状态。
模块的引入方法是采用import函数,或者from import*引入包中的部分模块,导入之后即可使用模块中定义的变量、函数、类和对象等等。
模块除了自带的,还可以自己编辑,这就相当于编一个子函数的过程,定义完之后通过import直接导入程序。
Python在结合Abaqus软件或者其他软件进行程序开发的过程中,需要用到Abaqus所属的很多模块,比如:
from abaqus import *
from abaqusConstants import
*
from caeModules import
*
通过PyQt平台进行PythonGUI界面的设计时,也需要引入PyQt的相关模块,比如:
from PyQt5 import
QtWidgets
from PyQt5.QtGui import
*
from PyQt5.QtCore import
*
from Gui import
Ui_Form
import subprocess
总之,模块和包在用Python编写程序时,非常重要,脱离了模块和包,程序的很多功能都不可能实现。
2 创建模块
模块也是用Python写的,包括变量、函数、类及对象等,编写好某特定功能的模块后,以py文件形式存储,文件名就是模块的名称。
将模块放在合适的位置,Python解释器能够找到,那么就可以通过上面的方式导入。
这里有一点要注意,容易出问题:
Python脚本和模块的扩展名都是.py,那么程序如何是如何判断一个py文件是作为脚本还是模块呢?关键是一个名为__name__的变量,如果它的值是__main__,则不能作为模块,只能作为脚本直接运行;所以在很多脚本的最后都有一段类似下面的判断语句,限制只能以脚本方式运行,不作为模块使用;如果作模块使用,则不会运行该程序:
if __name__==’main’:
main()
3 创建包
几个功能相近的模块可以组成一个Python包,存放到一个目录结构中,通过输入包的路径来调用包中模块的相应对象,如变量、函数等。
创建一个包,就要创建一个与包同名的目录(文件夹),接着在该目录下创建__init__.py文件,该文件是包的初始化文件,可以为空,也可以定义相关代码;接着将相关的模块放在这个目录下,就创建了一个包,这个目录下的模块属于这个包。
4 标准模块
(1)sys模块
sys模块能够通过其访问与Python解释器紧密相关的变量和函数,有以下一些重要的函数与变量:
变量sys.argv:包括传递到Python解释器的参数,也包括脚本名称,命令行参数;
函数sys,exit():退出当前程序,可以提供一个整数或者字符串,用来表示程序是否成功运行;
映射sys.modules:将模块名称映射到实际存在的模块名的目录,它只用于当前导入的模块;
变量sys.path:是一个字符串列表,其中每一个字符串都是一个目录,在import语句执行时,解释器会从这些目录中查找模块;
变量sys.platform:是解释器正在其上运行的平台,在windows平台上,标识是操作系统的名称win32;
对象sys.stdin:是文件流输入对象,Python利用它获得输入;
对象sys.stout:文件流输出对象,Python利用它输出;
对象sys.stderr:文件流输出对象,利用它输出标准错误;
变量sys.version:Python解释器的版本号以及相关信息;
(2)os模块
这个模块提供了访问多个操作系统服务的功能。
os.name字符串指示正在使用的平台,对于Windows,是“nt”
os.getenv()和os.putenv()分别获取和设置环境变量;
os.remove()函数用来删除一个文件;
os.system()函数用来运行shell命令;
os.getcwd()函数得到当前工作目录,即当前python脚本工作的目录路径;
os.lisrdir()返回指定目录下的所有文件和目录;
os.path,split()函数返回一个路径的目录名和文件名;
os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。
os.path.existe()函数用来检验给出的路径是否真地存在
(3)fileinput模块
对文本文件进行操作。
fileinput.FileInput:打开文件;
fileinput.input():遍历多个输入流的行;
fileinput.filename():返回当前文件名称;
fileinput.lineno():返回当前文件的行数;
fileinput.nextfile():关闭当前文件准备读下一个文件;
fileinput.isfirstline():测试当前行是否是文件的第一行;
fileinput.close():关闭文件
(4)Random模块
包括随机返回随机数的函数。
random():函数产生0-1之间的随机数;
iniform(a,b):产生a-b之间均匀分布的随机数;
randrange(start,stop,step)产生一定范围内的均匀分布随机数;
choice(seq):给定序列seq等概率选出一个随机数;
sample(seq,n):给出序列seq中等概率的n个随机数