Python 语言学习 第九篇:模块

 模块是把程序代码和数据封装的Python文件,也就是说,每一个以扩展名py结尾的Python源代码文件都是一个模块。每一个模块文件就是一个独立的命名空间,用于封装顶层变量名;在一个模块文件的顶层定义的所有的变量名(函数名也是一个变量名),称作模块的属性。导入模块给予了对模块的全局作用域中的变量名的读取权,也就是说,在模块导入时,模块文件的全局作用域变成了模块内对象的命名空间。

导入一个模块之后,可以使用模块中定义的属性,例如,在模块moduleA中导入一个模块moduleB,那么moduleB就变成了命名空间,在moduleA中可以使用moduleB中的全局变量,引用的格式是:moduleB.attribution_name。

概括来说,Python中的模块拥有三个大的作用:

  • 代码重用:模块用于保存代码,按照需要导入或重新导入模块,以使用模块中的代码。
  • 变量封装:模块把变量名封装起来,模块变成了一个独立的命名空间,模块封装的变量名变成了属性,这就避免了变量名的冲突。
  • 代码共享:把通用的代码组织成模块,分享给他人。

一,Python程序的结构

一般来说,一个Python程序结构是由一个主文件(又称为顶层文件、脚本)和多个模块构成的,其中主文件包含了程序的控制流程,也就是启动之后能够运行整个程序的文件,而模块文件是用于提供工具的库。

在Python中,一个文件导入了一个模块来获得该模块内定义的工具的访问权,因此,通用的Python程序的结构就是:在顶层文件中导入模块,并引用模块中的工具。

例如,在脚本文件main.py中导入functools模块中的reduce()函数,使用该工具函数实现列表元素的加和:

复制代码
from functools import reduce a=reduce((lambda x,y:x+y),range(0,5)) print(a) 
复制代码

二,模块的创建

定义模块,只需要使用文本编辑器,把一些Python代码输入到文本文件中,然后以".py"为扩展名名进行保存,任何此类文件都会被自动认为是Python模块。在模块顶层指定的变量名是模块的属性。注意:模块的文件名必须以扩展名 .py 结尾。

例如,创建一个strtools模块,文件名必须是strtools.py,文件的内容是Python代码,其中append_suffix是模块的属性名,引用该属性的格式是:strtools.append_suffix(arg):

复制代码
def append_suffix(str):     return str+'- py'
复制代码

三,导入模块

导入从本质上来讲,就是为了载入另一个文件,并能够读取该文件的内容。模块的导入是由两个语句来处理:

  • import语句:以一个整体导入一个模块;
  • from语句:从一个模块文件中导入特定的变量名;

import语句和from语句都会加载模块,加载的过程包括搜索、编译和执行模块文件。两者的差别在于:import语句 会读取整个模块,所以必须进行定义后才能读取它的属性;form语句直接获取模块中特定的变量名。

在一个导入语句中的模块名起到两个作用:识别加载的外部文件;把模块名作为命名空间,用于封装模块内的顶层变量名。在导入模块时,模块定义的对象也会在import语句执行时创建,通过module_name.attribution_name来引用模块内定义的变量名。

例如,在主文件中导入strtools模块,并使用append_suffix()函数:

复制代码
import strtools mystr=strtools.append_suffix('It is a cat') print(mystr)
复制代码

1,import语句

import语句使用一个变量名来引用整个模块对象,因此,必须通过模块名称来获得模块的属性:

复制代码
import strtools strool.append_suffix('xx')
复制代码

2,from语句

from语句把变量名复制到另一个作用域,因此,可以直接在脚本中使用变量名,而不需要通过模块:

复制代码
from strtools import append_suffix  append_suffix('xx')
复制代码

由于模块中的变量名可能由很多,可以使用*,取得模块顶层的所有变量名,把模块顶层的变量名都复制到当前的作用域内:


                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信