3.7 使用模块获得附加特性
到目前为止,你已经见过import很多次了,但我们并没有解释它们究竟做些了什么。事实上,非常简单,import只是将Python代码从另外一个文件中转移到当前程序中。如果你创建一个名为module_example.py的文件,并写入下面这行:
"https://yqfile.alicdn.com/bb0434e3017edf295f99b6c75aa533f85a84ee8a.png
" >
将其保存在你的home目录(对于默认用户就是/home/pi)。现在,在IDLE3的Python解释器中输入:
https://yqfile.alicdn.com/7484e9680d0e9de5b1d2752a73b066b31f79e06c.png
" >
当然,这是个毫无意义的模块。通常模块中包括可以使用的函数或对象。把module_example改成:
你必须重启IDLE才能重新使用新代码。重启之后运行:
https://yqfile.alicdn.com/83acb46bea99384c1a794defbc84befa1894a52d.png
" >
第一行将module_example的所有函数和类导入你的工程中,在函数或类名前加上模块名作为前缀就可以使用它们了。有时,你只需要模块中的一部分,那么可以只导入其中的一部分:
module_example改成:
https://yqfile.alicdn.com/8486d2f366f016a2a2802cf1d64b7bc6fa223909.png
" >
现在,只要输入下面这行就可以运行该函数:
module_example改成:
注意,这里不需要加模块名前缀。因为我们已经将其导入当前名字空间。这样做的时候需要确保它和自己定义的其他函数或类没有冲突。为了方便使用,你也可以将某个模块的所有东西都导入当前名字空间:
module_example改成:
https://yqfile.alicdn.com/515fec3a738dbe8d73c9c7a0507721540fd5247e.png" >
这样做需要非常小心,以避免名字空间冲突。
使用模块而不是将所有东西放入一个文件有很多优点。它使得代码可以在不同工程间复用(关于代码复用,还记得我们是怎么说的么?)。它还可以避免将大工程保存在单个文件中带来的不便。你可以将不同的模块分给不同的组,方便团队一起工作。
后继章节中,我们将围绕几个特别的模块,为你的树莓派工程增加许多足够酷的特性。