Python模块导入

一、任务描述

  本实验任务主要对Python模块进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python的模块,并对Python模块的基本操作进行整理并填写工作任务报告。

二、任务目标

1、掌握Python模块

三、任务环境

Ubuntu16.04、Python2.7

四、任务分析

  模块(module)是Python中非常重要的一个概念,模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。这类似于C语言中的include头文件,Python中我们用import导入我们需要的模块。

五、任务实施

步骤1、环境准备

  右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令 打开终端。

  通过【cd /home】切换到home目录下。【ls】查看该目录下的所有内容。

图1 切换目录

  【mkdir module】在home目录下创建module文件夹。

图2 创建文件夹

步骤2、搜索路径

  当导入一个模块,Python 解析器对模块位置的搜索顺序是:

  1、当前目录

  2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。

  3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。

  模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

  【cd module】切换到module目录下,【ipython】切换到ipython的解释器。

图3 ipython解释器

  用import导入需要的模块。类似于头文件,模块也是需要系统的搜索路径的,下面的命令即是系统默认的搜索路径,当导入一个模块时,系统就会在下面的路径列表中搜索相应的文件。

图4 导入模块

  假如没有搜到相应内容就会报错。

图5 导入模块

步骤3、模块导入

  【vim module1.py】回车后创建并编辑名为module1的Python文件

图6 创建Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

  定义全局变量age,定义sayHello()函数,在主函数内调用sayHello()方法。

图7 编辑Python文件

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,在退出后的窗口内输入【ipython】切换到ipython的解释器。

图8 ipython解释器

  【import module1】导入新建的Python模块。一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

  【module1.age】调用模块内的变量。

  【module1.sayHello()】调用模块内的函数。

图9 调用模块

  通过【exit()】退出ipython解释器,再次通过【ipython】进入ipython解释器。输入如下程序。

  【from module1 import *】 把一个模块的所有内容全都导入到当前的命名空间,一次性导入。

图10 导入模块

  也可以从模块中导入一个指定的部分到当前命名空间中。

  注意两种方法的不同。 From 并没有把sayHello()函数 引进来,所以当前namespace没有sayHello()这个name。所以报错。

图11 导入模块

步骤4、命令空间

  命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。也就是可以把一个namespace理解为一个字典,实际上很多当前的Python实现namespace就是用的字典。各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间可以有重名并且没有任何影响。

  【vim module2.py】回车后创建并编辑名为module2的Python文件

图12 创建Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

  global Money 的表达式会告诉 Python, Money 是一个全局变量,这样 Python 就不会在局部命名空间里寻找这个变量了。

图13 编辑Python文件

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。【ipython】进入ipython解释器。

  一个模块的name space是这个module被import的时候创建的。每个module都有一个_name_的attribute,用来表示当前module的名字。

  dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。

图14 dir()函数

猜你喜欢

转载自www.cnblogs.com/yu-1104/p/9050504.html