Python模块设计和应用模块是一个概念,它包含1~N个文件,如果文件是Python代码文件(即以.py结尾的文件),每个文件可以包含函数、类等。在公司工作,很多项目都是通过协同开发完成的。一个项目背后可能有很多工程师。为了开发方便,每个人负责的功能或类,尽量封装在一个模块中。模块请记住英文模块。有的地方叫库,有的地方叫包。对于现阶段的你来说,就当成一样的内容吧。网上有大量的开源模块。这些模块的最大优点是它们是免费的。很多时候,使用这些模块可以大大提高编码效率,这也是很多人喜欢Python的原因之一。将函数放入模块模块学习的过程不能根据语法结构来学习。它是一种抽象知识,是一种代码设计方法。例如,将书面信函放入模块中。#声明一个宫保鸡丁functiondefkung_pao_chicken(*ingredients):"""这个函数用来输出宫保鸡丁的主要原料"""print("宫保鸡丁的主要原料是:")foriteminingredients:print(item)#声明一个鱼香肉丝的函数defyu_shiang_shredded_pork(**args):"""这个函数的作用是获取用户输入的参数。"""print("Whatdoyouneedforiteminargs.items():print(item)上面的内容声明了两个函数。当然要夸一下函数名,翻译准确,意味深长。接下来,将上述函数集成到一个模块中,新建一个文件stir_fry.py,将这两个函数复制到新文件中。stir\_fry.py文件包含这两个函数。好了,任务完成了,一个模块就创建好了。这个stir_fry.py文件是一个模块。你现在脑子里肯定有一张黑问号脸,什么?就是这样。是的,完了,一个低配模块就完成了。接下来,你就可以拿这个模块给别人使用了。等你会写模块,成为高手之后,就可以给新人提建议,写模块了。应用函数moduleimportimportmodule在另一个文件中,可以通过import模块名导入一个模块,例如导入刚刚创建的stir_fry模块。注意新建一个文件,文件名随意但不能和模块重名。importstir_fry#注意导入的模块不能加下划线,所以模块的文件名不能加下划线。如果要使用模块中的功能,只需要参考下面的语法格式即可。modulename.functionname()通过stir_fry调用模块中的函数。importstir_frystir_fry.kung_pao_chicken("黄瓜","胡萝卜","鸡胸肉","花生")stir_fry.yu_shiang_shredded_pork(old="橡皮擦鱼香肉丝",new="大哥的鱼香肉丝不要'tgetthefishgo.")通过importstir_fry导入一个模块后,模块中的所有函数一次性导入到新文件中。导入模块的某个功能如果不想导入模块的所有功能,而只想导入某个功能,可以使用下面的语法来解决这个问题。frommodulenameimportfunctionnamemodification上一节案例:fromstir_fryimportkung_pao_chickenkung_pao_chicken("cucumber","carrot","chickenbreast","peanuts")#下面的函数不能调用,因为yu_shiang_shredded_pork(old="橡皮擦的鱼香鱼肉丝",new="大哥的鱼香肉丝无鱼肉")直接导入模块中的函数,使用时不需要通过模块名调用,直接写函数名即可。能。导入模块中多个函数的语法格式如下:frommodulenameimportfunctionname1,functionname2,...import模块中所有函数的语法格式如下:frommodulenameimport*asalias刚才导入模块应该能找到一个潜在的函数问题是如果函数名太长怎么办。除了名字太长之外,还有一种情况是模块中的函数名和当前文件中的函数名可能重名。此时可以学习一个新的内容,使用as为模块引入的函数取别名,然后在文件中使用别名进行编码。语法格式如下:frommodulenameimportfunctionnameasalias以上内容应用于案例如下代码:fromstir_fryimportkung_pao_chickenaspaopao("cucumber","carrot","chickenbreast","peanuts")asalias也可以直接作用于模块,语法格式如下:importmodulenameasaliasputtheclassintothemodule随着编程越来越复杂,仅仅把函数放到模块中已经不行了不再满足要求,更高级的内容放在模块中,也就是类中。首先在dog_module.py文件中定义一个类。classDog():def__init__(self):self.name="Puppy"defsay(self):print("Wowwoof")此时dog_module为模块名,只有一个classDog在这个模块中,你还可以在这个模块中创建更多的类,例如:classDog():def__init__(self):self.name="Puppy"defsay(self):print("Wowwoof")classcat():def__init__(self):self.name="kitten"defsay(self):print("喵喵喵~")import导入一个模块(类)和导入一个模块的功能部分知识一样,如果要导入一个模块中的类,可以直接通过如下语法格式实现:import模块名使用模块中的类,语法格式如下:模块名.类名具体代码不在演示,你可以自己做。导入模块的类导入模块的类的用法与导入模块的函数用法一致。创建一个新的demo.py文件,导入dog_module模块中的类。#导入dog_module模块中的dog类fromdog_moduleimportDogdog=Dog()dog.say()从模块导入多个类这种方法也和函数导入一致,语法格式如下:frommodulenameimportclassname1,className2,classname3...导入模块中的所有类frommodulenameimport*学了这个你应该发现导入模块中的函数和导入模块中的类几乎没有区别从代码编写的角度。比较学习。也可以在导入类时应用别名,也可以使用as语法。常用模块学习至此,你已经对什么是模块以及如何使用模块有了基本的了解。接下来,您不需要自己编写一个特别棒的模块。让我们先应用一些常用模块。随机数模块可以通过随机数模块获取一个数。其使用场景广泛,如游戏相关开发、验证码相关、彩票相关等。学习了随机数之后,可以完成一些很不错的小案例。randint方法导入随机数模块后,可以通过randint方法随机生成一个整数,比如下面的代码:importrandom#导入随机数模块num=random.randint(1,10)print(num)and反复运行代码得到一个1~10之间的数,从而可以得到randint方法中参数的含义。randint(min,max)#min最小值,max最大值你能试着给randint函数起个别名吗?choice方法可以通过choice方法实现与list的一些效果,choice可以随机返回list中的一个元素。importrandom#导入随机数模块play=random.choice(["football","basketball","pingpong","baseball"])print(play)如果想知道choice方法的具体用法,记得如何查询?importrandom#导入随机数模块print(help(random.choice))shuffle方法该方法可以打乱列表的顺序。importrandom#importrandomnumbermodulemy_list=["football","basketball","tabletennis","baseball"]random.shuffle(my_list)print(my_list)简单的选取random模块中的三个方法进行说明,对于模块的学习,后面会针对每个模块单独写一篇文章。时间模块时间模块是Python中一个非常重要的内置模块。很多场景离不开它。内置模块是Python安装后自带的模块。time方法time模块主要是用来操作时间的。此方法中有一个时间对象。使用time方法后,可以得到从1970年1月1日00:00:00到现在的秒数,很多地方会称之为时间戳。importtimeprint(time.time())output:1606810686.3747146sleep方法该方法允许程序暂停,该方法的参数以秒为单位。语法格式为:importtimetime.sleep(10)#暂停程序10秒,然后执行asctime和localtime方法。以上两种方法都可以返回当前系统时间,只是显示形式不同。importtimeprint(time.asctime())print(time.localtime())time模块中涉及的方法也就这么多,在后续的滚雪球学习过程中会不断补充。Python还有很多内置的模块,比如sys模块、os模块、json模块、pickle模块、shelve模块、xml模块、re模块、logging模块等,以后慢慢学习,可能需要另行说明。这篇博客的总结是Python模块,一种快速编码的方式。很多时候,第三方模块可以帮你解决大部分常见的编码场景,让你在编码的道路上飞翔。
