# Python3 模块 在前面的几个章节中我们基本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。 为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。 --- ## import语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: ```python import module1[, module2[,... moduleN] ``` 当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。 一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。 搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。做一个简单的实验,我们在桌面创建一个文本文件 `(fibo.txt)`,打开后输入: ```python def fib(n): # 定义到 n 的斐波那契数列 a, b = 0, 1 while b < n: print(b, end=' ') a, b = b, a+b print() def fib2(n): # 返回到 n 的斐波那契数列 result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result ``` 然后将文本文件保存后关闭,并重命名为 `fibo.py`。 <center><img src="assets/image/1.png" width="300"/></center> 然后打开我们的在线编程界面,选择右上角更多中的上传文件,将刚刚创建的 `fibo.py` 上传至开发板中,如下图所示: <center><img src="assets/image/2.png" width="1000"/></center> <center><img src="assets/image/3.png" width="1000"/></center> <center><img src="assets/image/4.png" width="1000"/></center> 然后进入Python解释器,使用下面的命令导入这个模块: ```python import fibo ``` 这样做并没有把直接定义在fibo中的函数名称写入到当前符号表里,只是把模块fibo的名字写到了那里。 可以使用模块名称来访问函数: ```python >>>fibo.fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' ``` 如果你打算经常使用一个函数,你可以把它赋给一个本地的名称: ```python >>> fib = fibo.fib >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 ```