简介
如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?答案是使用模块。模块是一个包含了所有你定义的函数和变量以.py结尾的文件。
定义并载入模块
首先来学习如何使用模块。
我在c:\test存放一个文件:Hello.py。存放的代码是:1
print("Hello")
接着我们执行下面代码1
2
3
4import sys #import的作用是导入模块,这里我们导入了sys模块
sys.path.append("c:\\test") #这条语句的作用是告诉解释器从哪里寻找模块。 路径还可以这样写sys.path.append("c:/test")
import Hello #这时我们就可以导入自己的模块Hello(模块名为文件名)
输出结果1
Hello
这是可以在c:/test文件夹下看到多了一个新的文件夹pycache,在这个文件夹中出现了文件Hello.cpython-34.pyc。这个文件是与平台无关,且已经经过编译处理的。
包含函数的模块
我在c:\test存放一个文件:sayHello.py。存放的代码是:1
2
3
4
5
def say():
print("hello");
def cry()
print("55555555")
我们执行下面的代码:1
2
3
4
5
6
import sys
sys.path.append("c:\\test") #如果被导入的模块与输入他的程序在同一个目录中,则不需要sys.path.append了
import sayHello
sayHello.say() #导入模块之后可以调用模块中的函数,但是需要以 模块名.函数 的格式sayHello.cry()
得到 hello,另一种方式是直接导入模块里的函数1
2
3
4
5
6import sys
sys.path.append("c:\\test")
from sayHello import say ,cry #直接导入模块中具体的函数,缺点是如果想使用模块中的其他函数,需要追加导入
say() #可以直接使用函数
cry()
模块的属性
name属性
- 如果模块是被导入,name的值为模块名字(文件名)
- 如果模块是被直接执行,name的值为’main’
1 |
|
输出你好
以模块的形式被调用,则什么都不会输出
应用
当我们编写Python库模块的时候,我们往往运行一些测试语句。当这个程序作为库被import的时候,我们并不需要运行这些测试语句。一种解决方法是在import之前,将模块中的测试语句注释掉。而更优美的解决方法,就是使用name。
下面是一个简单的库程序TestLib.py。当直接运行TestLib.py时,name为”main“。如果被import的话,name为”TestLib”。1
2
3
4
5
6
7
8
9
10
def lib_func(a):
return a + 10
def lib_func_another(b):
return b + 20
if __name__ == '__main__':
test = 101
print(lib_func(test))
doc属性
介绍模块的功能
1 |
|
模块包
可以将功能相似的模块放在同一个文件夹(比如说this_dir)中,构成一个模块包。通过1
import this_dir.module #引入this_dir文件夹中的module模块.
该文件夹中必须包含一个init.py的文件,提醒Python,该文件夹为一个模块包。init.py可以是一个空文件。
Tips
在编译器中可以通过dir()函数来查看模块中的属性和函数。
1 |
|