上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两个方法。