首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文提升你的Python能力——定义模块、说明模块和测试模块

上次和大家探讨了关于Python模块化编程的东东,可能大家会问了:我已经了解了Python模块化编程的精髓了,但是我能不能自己定义模块呢?

先说答案,答案是当然能哈~

下面就和大家探讨一下关于定义模块、说明模块和测试模块相关的东东,那我们就开始吧!

首先,说一下:定义模块

首先来个灵魂拷问问题?模块到底是啥呢?该怎么定义自己的模块呢?

模块呀,当然就是Python程序了,到这可能你会说“废话”,这还真不是废话哈,因为所有的Python程序都可以作为模块进行导入哦,也就是说,你随便写个Python程序,统统都可以作为模块导入,并且只要你导入了模块,你就可以肆无忌惮的使用该模块内的所有成员了哦。

下面举个“栗子”:

先对这个“栗子”简单说明一下吧,在该“栗子”中呢,第1行执行了一条简单的输出语句哦,然后第3行定义了一个变量,然后又定义了一个say_hello()函数,最后定义了一个Friend类。到这你有木有发现呢?这和普通的Python程序木有啥区别哦,你的发现是对的哦,但这仍然可以作为模块来导入哦。

到这可能大家又有问题了:那使用模块有啥好处呢?好处当然有了,比如说像上面“栗子”中的代码一样,将需要使用的一些单元东东定义在模块中,那么在日后使用时不管哪个程序只要导入了这个模块,这个程序就可以使用这个模块中的所有东东了哦,这就是常说的复用,对于大工程开发的好处是大大滴,而且呢,使模块,你还能避免每个程序都需要重新定义这些模块中的东东的坑哦。

再补充一句:其实呢,模块文件的文件名就是模块名哦,比如上面“栗子”module1.py的模块名就是module1哦。

好啦,说明白了定义模块,下面就说一下说明模块吧!

 说明模块

啥叫说明模块呢?又是灵魂拷问哈?说明模块说白了就是给模块添加说明语言(文档)哦!

因为在实际的工程开发,尤其是在大项目中,整个项目是由一个团队共同完成的哦,每个人可能负责不能的东东,这时就需要为模块编写说明文档了哦,因为如果木有说明文档,你团队中的其他成员看你的代码可能就是一脸懵逼哦!

那该怎样为模块添加说明文档呢?其实呢,还是挺简单滴,你只有在模块开始处定义一个字符串直接量就可以了哦。

还是举个“栗子”吧:

上面“栗子”中红色方框中的这段话就是为模块添加的说明东东哦!

最后补充一句:对于这个说明的话,你可以通过模块的__doc__属性来访问文档哦。

好了,到此你已经会定义模块并会为模块添加说明文档了,但是人非圣贤,谁能保证自己写的“码子”完全正确呢,这时就要凸显测试模块的重要性了,那该怎么对模块进行测试呢?不要着急哦,下面告诉大家!

 测试模块

测试模块就是给模块添加一些测试代码的东东!通过测试后,你才能保证你所写的模块中的每个单元东东都正确哦!

前面已经说了哦,模块呢,就是Python代码,因此呀,我们可以使用Python命令来解释并执行这些模块程序哦,但是呢,条件还是有的,就是你的模块中必须包含可执行的代码!

比如上面的“栗子”,如果你用pythong module1.py运行,就只执行print(‘俺是模块哦’)这一句,这就尴尬了哦,因为模块中你所定义的函数呀、类呀都木有测试到哦。

那该怎么搞呢?你可能会用下面的方法:

到这你可能慢慢的成就感,但是呢,这有问题的,因为如果你这个模块被其他程序导入使用时,你所编写的这三个测试函数都会自动执行,这显然不是你期望的效果哦,是不是到这有点“捉急”了呢?要相信Python哦,不然Python就不会这么火爆了!

其实呢,对于模块的测试完全可以借助所有的模块内置的__name__变量进行区分哦,因为假如直接使用python命令来运行一个模块,那么__name__变量的值就是__main__;还有假如哦,假如这个模块中被导入到其他程序中了,那么__name__变量的值就是模块名哦。

好了,到此答案就出来了,就是如果你希望测试函数只有在使用python命令直接运行时才执行,那么你就可以在测试函数中增加判断了哦,就是说只有当__name__属性为__main__时才调用测试函数哦。

将上面“栗子”中的测试代码改为如下“正规军”风格:

最后运行一下看一下效果吧,效果如下:

敬请关注“品位集结号”,为您带来最新的小知识!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201110A0H4V800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券