3.4引入那把宝剑
1.引入模块
“如何用编程语言杀死一条龙? ”(虽然这个不是重点但觉得蛮有意思,记录一下)
Java语言 “赶到那里,找到巨龙,开发出一套由多个功能层组成的恶龙歼灭框架,写几篇关于这种框架的文章……但 巨龙并没有被消灭掉。”这个回答其实是在取笑Java复杂的框架。
C语言 “赶到那里,对巨龙不屑一顾,举起剑,砍掉巨龙的头,找到公主…… 把公主晾在一边,去看看有没有最新提交的Linux内核代码。”这个答案则是夸奖C语言的强大,以及C语言社区对Lirmx内核的投入。
至于Python 语言,很简单:
import slay_dragon
了解Python模块的人会对这行代码微微一笑。
在Python中,一个.py 文件就构成一个模块。通过模块,你可以调用其他文件中的函数。而引入(import)模块,就是为了在新的程序中重复利用已有的Python程序。 Python通过模块,让你可以调用其他文件中的函数。我们先写一个firstly文件,内容如下:
def laugh(): print('hhhhh')
再在同一目录下写一个second.py文件。在这段程序中引入first模块:
from firstly import laugh for i in range(10): laugh()
除了函数,我们还可以引入其他文件中包含的数据。比如我们在demo.py中写入:
text = "Hello Vamei"
在import demo.py中,我们引入这一变量:
from demo import text print(text) # 打印'Hello Vamei'
对于面向过程语言来说,模块是比函数更高一层的封装模式。程序可以以文件为单位实现复用。典型的面向过程语言,如C语言,有很完善的模块系统。把常见的功能编到模块中,方便未来使用,就成为所谓的库(library)。由于Python的库非常丰富,所以很多工作都可以通过引用库,即借助前人的工作来完成。这也是Python要用import语句来杀龙的原因。
2.搜索路径
我们刚才在引入模块时,把库文件和应用文件放在了同一文件夹下。 当在该文件夹下运行程序时,Python会自动在当前文件夹搜索它想要引入的模块。
但Python还会到其他的地方寻找库:
- 标准库的安装路径(标准库是Python官方提供的库e g:import time)
- 操作系统环境变量PYTHONPATH所包含的路径
如果你是自定义的模块,则可以放在自认为合适的地方,然后修改 PYTHONPATH这个环境变量。当PYTHONPATH包含模块所在的路径时, Python便可以找到那个模块。修改PYTHONPATH的方式可参考本章附录。