1.14 工程
较大的工程常常由多个模块组成,这些模块有负责计算的,有负责绘图的,有负责图形用户界面的,等等,多模块协同合作,完成比较复杂的工作任务。在一个模块中使用其他模块的函数或类,需要先导入该模块。
1.14.1 导入内置模块和第三方模块
使用内置模块中的函数和类,需要先用import语句导入该模块,语法格式为:
在调用模块中的函数时,这样引用:
如果只引入模块中的某个函数,则使用from…import语句。
下面在一个模块中导入math模块,调用它的sin函数、cos函数和常量pi计算给定30度角的正弦值和余弦值。该文件位于Samples目录下的ch01子目录中,文件名为sam01-30.py。
第1行导入math模块,第2行从math模块中导入cos函数,第3行用常量pi计算30度角,第4行用math.sin()函数计算30度角的正弦值,第5行直接用cos函数计算30度角的余弦值,第6行和第7行分别输出正弦值和余弦值。
在Python IDLE文件脚本窗口中,在“Run”菜单中单击“Run Module”选项,则IDLE命令行窗口显示下面的结果:
1.14.2 导入自定义模块
对于自定义模块而言,因为模块文件保存的位置不确定,直接使用import语句可能会导致出错。一般情况下,使用import语句导入模块后,Python会按照以下顺序查找指定的模块文件。
• 当前目录,即该模块文件所在的目录。
• PYTHONPATH(环境变量)指定的目录。
• Python默认的安装目录,即Python可执行文件所在的目录。
所以,只要自定义模块文件被保存在这三种目录下,就能被Python找到。其中用得最多的是第一种目录,即将导入和被导入的模块放在同一个目录下。
在介绍类模块时创建了sam0129.py文件,其包含一个student类。下面在相同目录下添加一个模块,它导入sam0129模块,并使用其中的student类进行编程。该文件位于Samples目录下的ch01子目录中,文件名为sam01-31.py。
第1行从sam0129模块中导入student类。第3~5行创建类实例,输出类实例的ID属性值,调用它的run方法。
在Python IDLE文件脚本窗口中,在“Run”菜单中单击“Run Module”选项,则IDLE命令行窗口显示下面的结果:
前面两个结果是sam0129模块中输出的。
这样,自定义模块可以通过导入其他模块来扩展自身的功能,或者说协同合作,一起把事情做好。