当代码越来越多的时候,将代码放入一个py文件难以维护,所以我们将代码分拆放入多个py文件,可以使不同py文件中同一名字的变量或函数互不影响。
我们可以把函数看成一块积木,模块就是一盒主题积木,通过它可以拼出某一主题的东西。在Python中,一个py文件就成为一个模块,通常情况下,我们把实现某一特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用。
注意:
创建模块时,设置的模块名尽量不要与Python自带的标准模块名相同
模块文件的扩展名必须是“.py”
模块名需要区分大小写字母
引用其他模块
import math #引用math模块
print math.pow(2,10) #调用math模块的函数
如果模块名比较长不容易记住,可以在导入模块时使用as关键字为其设置一个别名,通过别名也可以使用这个模块,例如:导入名为mostmediasenci并调用其中的fun_bmi函数:
import mostmediasenci as m
m.fun_bmi("wang",1.66,115)
使用from…import语句导入模块
在使用import语句导入模块时,每执行一条import语句就会创建一个新的命名空间(namespace)。如果不想在每次导入模块时创建新的命名空间,而是将具体的定义导入到当前的空间里,可以使用from…import语句。使用from…impot语句导入模块后,不需要再添加前缀,直接通过具体的变量、函数、类名等访问即可。
from modlename import menber
其中:
modlename:模块名称,需要和定义模块时设置的模块名称大小写保持一致
member:用于指定要导入的变量、函数或者类等。可以同时导入多个定义,各个定义之间使用“,”分隔。如果想导入全部定义,可以使用通配符“*”代替。
例:
from test import getinfo #导入test模块的getinfo函数
from test import getinfo,showinfo #导入test模块的getinfo和showinfo函数
from test import * #导入test模块的全部定义
注:在使用from…import导入模块中的定义时,需保证导入内容在当前命名空间中是唯一的。
使用通配符“*”导入模块的全部定义后,想要查看具体导入了哪些定义,可以通过显示dir()函数查看,例如执行print(dir())语句。
使用_future_
Python的新版本会引入新的功能,但是,实际上这些功能在上一个老版本中就已经存在了。 要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。
例如,Python 2.7的整数除法运算结果仍是整数,但是,Python 3.x已经改进了整数的除法运算,“/”除将得到浮点数,“//”除才仍是整数。
要想在Python 2.7中引入3.x的除法规则,需要导入__future__的division
使用模块可以避免函数名和变量名重名引发的冲突,为了解决模块名重复,提出了包的概念,它将一组功能相近的模块组织在一个目录下,既起到规范代码的作用,又能避免模块名重名引起的冲突。
创建包
创建包实际上就是创建一个文件夹,并且在该文件夹中创建一个名为“_ init_.py”的python文件,在"_ init _ .py"文件中可以不编写任何代码,也可以编写一些Python代码,在_ init_.py文件中编写的代码,在导入包时自动执行。
_ init_.py文件是一个模块文件,模块名为对应的包名。例如:在settings包中创建的 _ init_.py文件,对应的模块名为settings。
使用包
创建包以后,就可以在包中创建相应的模块。从包中加载模块有以下三种方式:
import 完整包名+模块名
import settings.size
from 完整包名 import 模块名
from settings import size
from 完整包名+模块名 import 定义名
from settings.size import width,height
(width,height为settings包下size模块中的变量)
在Python中自带了很多实用的模块,称为标准模块,我们可以直接使用import语句导入到Python文件中使用。例:导入标准模块random并调用其randint()函数生成指定范围随机整数。
import random #导入标准模块random
print (random.randit(0,10)) #输出0-10随机数
Python常用的内置标准模块:
模块名 | 描述 |
---|---|
sys | 与Python解释器及其环境操作相关的标准库 |
time | 提供与时间相关的各种函数的标准库 |
os | 提供了访问操作系统服务功能的标准库 |
calendar | 提供与日期相关的各种函数的标准库 |
urlib | 用于读取来自网上(服务器上)的数据的标准库 |
json | 用于使用JSON序列化和反序列化对象 |
re | 用于在字符串中执行正则表达式匹配和替换 |
math | 提供标准算数运算函数的标准库 |
decimal | 用于进行精准控制运算精度、有效数位和四舍五入操作的十进制运算 |
shutil | 用于进行高级文件操作,如复制、移动和重命名等 |
logging | 提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能 |
tkinter | 使用Python进行GUI编程的标准库 |
除此之外,Python还提供了很多其他模块,可以在Python的帮助文档中查看。
具体方法:打开Python安装路径下的Doc目录,在该目录中的扩展名为.chm的文件即为Python的帮助文档。
除了Python内置的标准模块,还有很多第三方模块可以使用,可以在Python官网推出的https://pypi.org/中找到。
使用第三方模块时,需要先下载并安装该模块,然后就可以像使用标准模块一样导入并使用了。下载和安装第三方模块可以使用Python提供的pip命令实现:
pip <command> [modulename]
参数说明:
例:
pip install numpy
执行上述代码,将在线安装numpy模块。