聪哥哥教你学Python之模块

聪哥哥本次主要围绕使用模块和如何安装第三方模块等两个话题谈论。

不过在此之前,需要普及一下模块的相关概念知识。

那么什么是模块?

引用百度百科上说的:

模块 是一个设计术语,是指对词条中部分内容进行格式化整理的模板。例如歌手类词条中的“音乐作品”模块,电视剧类词条的“分集剧情”模块。在程序设计中,为完成某一功能所需的一段程序或子程序;或指能由编译程序、装配程序等处理的独立程序单位;或指大型软件系统的一部分。

模块,又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体)。它具有两个基本的特征:外部特征和内部特征。外部特征是指模块跟外部环境联系的接口(即其他模块或程序调用该模块的方式,包括有输入输出参数、引用的全局变量)和模块的功能;内部特征是指模块的内部环境具有的特点(即该模块的局部数据和程序代码)。

模块有各种类型,如单元操作模块(换热器精馏塔压缩机等)、计算方法模块(加速收敛算法、最优化算法等)、物理化学性质模块(汽液相平衡计算、热焓计算等)等。

引用廖雪峰先生说的:

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

那么使用模块又什么好处呢?

最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。点这里查看Python的所有内置函数。

你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)

聪哥哥有话说:

模块是一组Python代码的集合,可以使用其他模块,也可以被其他模块使用。

创建自己的模块时,要注意:

  • 模块名要遵循Python变量命名规范,不要使用中文、特殊字符;
  • 模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。

另外在补充一点:

这个模块的思想与当初聪哥哥做某个项目的架构设计,有一致的相同处。这里不会详说。后续聪哥哥会出相关系列的文章讲解。

一、使用模块
Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。

示例十一(学任何编程语言或者编程语言相关的中间件或框架,必经之路,“Hello Wordl”,在此也不例外):

# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()

关于作用域:

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。

正常的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI等;

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;

类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等;

之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

二、安装模块

在Python中,安装第三方模块,是通过包管理工具pip完成的。

比如:

在node.js中有的时候需要安装比如Express框架,就需要npm这个安装包管理工具。

在Java中比如使用多模块来开发项目,有些时候得mvn install对应的java项目,不然的话有些项目需要引用这个就会报错。

这里的pip来安装依赖,你也可以理解为npm。其实它们有很多共同点。

一般什么时候需要安装模块,也就是你要使用这个模块时,那么什么时候你怎么才能知道你要使用这个模块。

聪哥哥给你一句话,等控制台报错,报错信息为没有这个模块时,也就像提醒你要安装这个模块。哈哈

小结:

感谢很多Python开源开发者们,将自己的优秀成果贡献出来,正是因为你们,开源的世界才能百花齐放。

猜你喜欢

转载自blog.csdn.net/JavaAndchief/article/details/83691909