Python语言关于包的编写和编译
1 什么是“模块”?
要想了解Python关于包的编写和编译,首先我们就得了解什么是模块。在百度百科中,“模块”一般是指任何能被装入内存中运行的可执行代码和数据的集合,直白地说,就像是一盒主题积木,通过它可以拼凑出某一主题的东西,它与函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函数,也就是说一个模块中可以由很多的函数共同构成。
2 Python的模块分类
Python提供了强大的模块支持,Python的模块主要可分为三大类:
- 标准模块
标准模块是Python自带的,在其标准库中。 - 第三方模块
第三方模块是一些已经由别人弄好的模块,例如数值计算包里就有很多模块,第三方模块需要下载后才能使用。 - 自定义模块
自定义模块就是用户根据自己的需要自己编写定义的模块。
3 如何自定义模块?
自定义模块主要可分为两个部分:一部分是创建模块,一部分是导入模块及如何调用模块。
3.1 创建模块
在创建模块的时候,我们应当将模块中的相关代码编写在一个单独的文件中,在命名时应将文件命名为“模块名+.py”的形式。在这里需要注意的是,定义的模块名称不能与Python自带的标准库的名字相同。
在这里以一个计算bmi指数的模块编写为例,代码如下:
def fun_bmi(person,height,weight):
'''功能:根据身高和体重计算BMI指数
person:姓名
heght:身高,单位:米
weight:体重,单位:千克
'''
print(person+"的身高:"+str(height)+"米 \t 体重:"+str(weight)+"千克")
bmi = weight/(height*height) #用于计算BMI指数,公式为:BMI=体重/身高的平方
print(person+"的BMI指数为:"+str(bmi)) #输出BMI指数
# 判断身材是否合理
if bmi< 18.5 :
print("您的体重过轻~@_@~\n")
if bmi>=18.5 and bmi<24.9:
print("正常范围,注意保持(-_-)\n")
if bmi>=24.9 and bmi<29.9:
print("您的体重过重~@_@~\n")
if bmi>=29.9:
print("肥胖^@_@^\n")
保存该模块为“bmi.py”文件。
3.2 导入模块
导入模块的方式主要有两种,一种是使用import语句导入模块,一种是使用from…import语句导入模块,以下分别以简单的例子进行介绍。
3.2.1 使用import语句导入模块
import语句导入模块的基本语法为:
import modulename [as alias]
#import 模块名 [as 想设定的简称]
这里以刚才创建好的bmi模块的导入为例:
在刚才创建好的"bmi.py"同级目录下创建一个名为"main.py"的文件,将"bmi.py"模块导入该文件中,并执行该模块中的fun_bmi()函数,具体的代码如下:
import bmi
bmi.fun_bmi("尹一伊",1.75,120)
执行结果如下:
3.2.2 使用from…import语句导入模块
使用from…import语句导入模块的基本语法为:
from modulname import member
#from 模块名 import 成员
modulname代表模块名,member用于指定要导入的变量、函数或者类。
这里通样以刚才创建好的bmi模块的导入为例:
from bmi import fun_bmi
fun_bmi("周大春",1.55,49)
执行结果:
4 Python中包的创建与调用
在python里,包的概念的提出是为了解决使用模块时函数名和变量名重名的问题。包是一个分层次的目录结构,它的功能是将一组功能相似的模块组织在一起。接下来将介绍如何创建包和使用包。
4.1 创建包
创建包的过程其实就是创建一个文件夹,并且在该文件夹下创建一个名为"–init–.py"的python文件,这是一个模块文件,模块名为对应的包名。在"–init–"文件中,可以不编写任何的代码,也可以根据自己的需要写代码。接下来将介绍如何创建一个包。
第一步:在电脑上创建一个文件夹,我在自己电脑的PythonProject文件夹下创建了一个名为"settings"的文件夹,在其内部又继续创建了一个同名文件夹。
第二步:在"settings"文件夹下创建"–init–.py"文件,文件中不写任何内容。
到这里,我们就已经创建好了一个名为"settings"的包,接下来只需在与"–init–.py"同级的目录下创建需要的模块即可。
以下是我在"settings"包中所创建的模块:
其中,"bmi.py"模块的代码如前面所示,"size.py"模块的代码如下:
width = 800 #宽度
height = 600 #高度
4.2 如何使用创建好的包
使用包,其实也就是使用包中创建好的模块,这里主要有三种方法:
- 通过"import+完整包名+模块名"加载指定模块
以这种方式导入包后,在使用时需使用完整的名称。
示例:
创建一个"main.py"文件,具体内容如下:
import settings.size #导入settings包下的size模块
if __name__=='__main__':
print('宽度',settings.size.width)
print('高度',settings.size.height)
运行结果:
- 通过"from+完整包名+import+模块名"加载指定模块
通过该方式导入包后,在使用时可不用带包的前缀,具体如下:
from settings import size #导入settings下的size模块
if __name__=='__main__':
print('宽度',size.width)
print('高度',size.height)
运行结果:
- 通过"from+完整包名+模块名+import+定义名"加载模块
以这种方式加载模块后,直接使用函数、变量即可。
示例:
from settings.size import width,height #导入settings下的size模块
if __name__=='__main__':
print('宽度',width)
print('高度',height)
运行结果:
至此,python自定义包的编写和编译使用介绍完毕。