文章内容

2017/8/19 14:18:01,作 者: 黄兵

Python 模块

你已经学习了如何在你的程序中定义一次函数而重用代码。如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块。

编写模块有各种各样的方法,但最简单的方法就是创建以.py 为扩展名的文件,在文件中包含函数和变量。

另外一个编写模块的方法就是用自然语言,就是以Python 编译器本身的方式写。例如,你可以用C 语言写模块(http://docs.python.org/extending/),当编译时,使用标准Python 编译器时,可以在Python 代码使用。

模块可以从另外一个程序导入来使用其函数的功能。这也是我们使用Python 标

准库的方式。首先,看一看如何使用标准库模块。

例子:

# !/usr/bin/python
# Filename: using_sys.py
import sys

print('The command line arguments are:')

for i in sys.argv:
print(i)

print('\n\nThe PYTHONPATH is', sys.path, '\n')
1 $ python using_sys.py we are arguments
2 The command line arguments are:
3 using_sys.py
4 we
5 are
6 arguments
7
8 The PYTHONPATH is ['', 'C:\\Windows\\system32\\python30.zip',
9 'C:\\Python30\\DLLs', 'C:\\Python30\\lib',
10 'C:\\Python30\\lib\\plat-win', 'C:\\Python30',
11 'C:\\Python30\\lib\\site-packages']

如何工作:

首先,用导入了sys 模块。基本上,这句语句告诉Python ,我们想要使用这个模块。sys 模块包含了与Python 解释器和它的环境有关的函数。

当Python 执行import sys 语句的时候,它会寻找sys 模块。在这个例子中,它是内置模块,因此Python 知道在哪里找到它。

如果它是未编译的模块,如用Python 写的模块, Python 解释器会查找列在sys.path 变量中的路径。如果模块找到了,就会运行那个模块主体中的语句,模块就是可以利用的了。注意,初始化过程仅在我们第一次导入模块的时候进行。

在sys 模块中,argv 变量可以用sys.argv 来引用。它很清楚地表明这个名字是sys 模块中的一部分。这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv 变量冲突。

sys.argv 变量是一个字符串的列表(列表会在后面的章节详细解释)。特别地,sys.argv 包含了命令行参数的列表,即使用命令行传递给你的程序的参数。

如果你使用IDE 编写运行这些程序,请在菜单里寻找一个指定程序的命令行参数的方法。

这里,当我们执行python using_sys.py we are arguments 的时候,我们使用python命令运行using_sys.py 模块,后面跟着的内容被作为参数传递给程序。Python 为我们把它存储在sys.argv 变量中。

记住,脚本的名称总是sys.argv 列表的第一个参数。所以,在这里,’using_sys.py’是sys.argv[0]、’we’ 是sys.argv[1]、’are’ 是sys.argv[2] 以及’arguments’ 是sys.argv[3]。

注意,Python 从0 开始计数,而非从1 开始。

sys.path 包含输入模块的目录名列表。我们可以观察到sys.path 的第一个字符串是空的—— 这个空的字符串表示当前目录也是sys.path 的一部分,这与PYTHONPATH环境变量是相同的。这意味着你可以直接输入位于当前目录的模块。否则,你得把你的模块放在sys.path 所列的目录之一。

注意,当前目录是程序启动的目录。运行import os; print(os.getcwd()) 来查询你的程序的当前目录。

分享到:

发表评论

评论列表