Python爬虫、数据分析与可视化:工具详解与案例实战
上QQ阅读APP看书,第一时间看更新

3.5.2 自定义包和使用包

如果我们需要重用的方法在两个同名的模块里,就会出现冲突。对此,我们可以采用基于包的重用方式。通过如下步骤可以新建一个包。

第一步,在本章代码目录Chapter3里,新建一个MyMathPackage包,其实它就是一个目录。

第二步,在其中放入一个名为__init__.py的文件,它可以是空文件。在Python的包里,需要有这样一个文件,否则会报错。

第三步,编写名为CalModule.py的文件,在其中放入数学计算相关的属性和方法,代码如下:


01 # coding=utf-8
02 g = 9.8
03 pi=3.14
04 def calGravity (m):
05     return m*g
06 def calCircleArea(r):
07     return r*r*pi

在第2行和第3行里,我们定义了两个属性;在第4行和第6行里,我们分别定义了计算重力和计算圆面积的两个方法。MyMathPackage包的目录结构如图3.1所示。

图3.1 包的目录结构

编写好这个自定义的包以后,我们可以在如下的UsePackageDemo.py案例里调用包里的功能,该文件可以和MyMathPackage同目录。


01 # coding=utf-8
02 import MyMathPackage.CalModule as mathTool
03 print(mathTool.g) # 9.8
04 print(mathTool.calGravity(10)) # 98.0
05 print(mathTool.calCircleArea(2)) # 12.56

在第2行里,我们通过import语句引入了包里的模块,并通过as语句给CalModule模块赋予了mathTool别名。在第3行里,通过mathTool这个别名指向CalModule,并输出了其中的g变量。在第4行和第5行里分别调用了CalModule模块里的calGravity和calCircleArea两个方法。