以下是对模块的理解,和总结
<1>模块是什么
模块是这样用的 import os 这就是导入了os模块
这和c语言里的#include<stdio.h>导入方式是一样的
导入了以后就可以用里面的一系列函数了
其实os 模块就是 一个os.py 的文件,当import以后,就可以用里面的mkdir,rmdir方法等
其实os.py文件里面的代码是这样的
def mkdir() xxxx def rmdir() xxxx
<2>模块的调用方法
a.import os
b.import os,math....#可以多个模块写一起,但是这样会容易乱
c.from os import mkdir
mkdir('abc')#下面直接用就可以了,就不用os.mkdir('abc')
这种导入方法,比较方便的地方就是可以导入os这个模块里的所有方法
from os import *
<3>定位模块
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
- 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
- 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
<4>模块调用详细
新建一个test.py,代码如下
def print_hello(): print('-----hello-----') def add(a,b): return a+b
在file.py文件里,导入这个模块
import test test.add(2,5)
上面就是最简单的调用
但是,还有一个问题:我自己写的模块,里面有很多函数,我自己要测试一下是否能正常运行,这时候就要在里面加入测试代码
def print_hello(): print('-----hello-----') def add(a,b): return a+b if __name__ == '__main__': print_hello() print(add(1,2))
重点来了:就是这句
if __name__ == '__main__':
为什么加这个判断:因为如果没有判断的话 ,在调用test模块的时候,测试语句也会被file,py所执行打印出来
但是测试语句我们只想让模块他自己调用,其他外人不给用
而且 print(__name__)这个在模块本身输出的结果是__main__
但是在外面调用的时候输出是模块的名字test
所以就可以通过加判断,让这个测试语句只被模块自己调用